![]() |
1
2
RoyOsherove在他的《单元测试的艺术》一书中谈到了这个问题。他也赞成在单元测试中只测试一个事实,但他指出,这并不总是意味着只有一个断言。在这种情况下,您正在测试
但是,如果您真的想要分割断言(例如,如果您正在测试需要类似设置但逻辑上不相同的各个方面),那么您可以这样做,而不需要太多的努力:
也可以说,由于这些测试需要相同的设置,它们应该有自己的夹具,并有一个
|
![]() |
2
3
对我来说,这似乎也很极端,这就是为什么我还为每个测试编写多个断言的原因。我已经有了500个测试,每个测试只写一个断言就可以将其放大到至少2500个,而我的测试需要10分钟才能运行。 由于一个优秀的REST运行者(如Resharper)可以让您看到测试很快失败的线路,所以您仍然可以很容易地理解为什么测试失败。如果您不介意额外的工作,您还可以添加断言描述(“断言工资单编号正确”),这样您甚至可以在不查看源代码的情况下看到这一点。有了这一点,每个测试只剩下一个断言就没有什么理由了。 |
![]() |
3
1
我使用一个助手类来包含断言。这使测试方法保持整洁,并将重点放在它们实际试图建立的内容上。它看起来像:
|
![]() |
mg610 · 如何开始C++单元测试 2 年前 |
![]() |
Phil Gunning · 使用嵌套函数更改进行模拟测试 2 年前 |
![]() |
shilin agre · 在Python中测试修饰函数 2 年前 |
![]() |
SlipScout · Unittest只传递单个值,而不是获取多个值 2 年前 |
![]() |
Alex · 从实际对象的实例返回默认模拟结果 2 年前 |