kni*_*ttl 16 .net collections nunit unit-testing assert
使用NUnit 2.6来判断两个集合长度相等而不管它们的元素值是什么,最恰当的方式是什么?
我可以看到表达这种断言的几种方式.哪一个是优选的,或者使用一个或另一个有缺点/优点?
Assert.That(coll1, Has.Count.EqualTo(coll2.Count));
Assert.That(coll1.Count, Is.EqualTo(coll2.Count));
Assert.AreEqual(coll1.Count, coll2.Count);
Run Code Online (Sandbox Code Playgroud)
我可以看到第一个选项提供了一个很好的输出,以防断言失败(预期计数...但实际上得到...),而其他两个选项只输出"Expected ...,actual ......"除非我通过附加参数提供自定义消息.
Eri*_*ips 24
我更喜欢:
Assert.That(collection, Has.Count.EqualTo(expectedCount));
Run Code Online (Sandbox Code Playgroud)
只是因为.Count并且Count()可能被错误地覆盖(如果它们应该在不同的单元测试中进行测试,尽管我不知道nunit实际上是如何在内部进行计数的).基本上我不希望我的实际有任何副作用逻辑.呼叫Count或Count()应该在以下行为中进行:
// Arrange
var expectedCount = 8;
// Act
var list = GetList();
var actualCount = list.Count();
// Assert
Assert.That(actualCount, Is.EqualTo(expectedCount));
Run Code Online (Sandbox Code Playgroud)
两者读得相当相同,但第一个在失败时查看的逻辑较少.
| 归档时间: |
|
| 查看次数: |
6491 次 |
| 最近记录: |