【发布时间】:2009-11-11 16:29:17
【问题描述】:
例如 Equals 方法。 a 应该等于 b 和 b 应该等于 a。您是否说可以在一个测试用例中使用两个断言来检查这一点,如下所示:
[Test]
public void Equals_TwoEqualObjects_ReturnsTrue()
{
var a = new Something();
var b = new Something();
Assert.That(a.Equals(b), Is.True);
Assert.That(b.Equals(a), Is.True);
}
或者你认为这应该在两个单独的测试中完成,这样你就不会在测试中有两个断言?
我认为在这种情况下有两个断言可能会更干净,因为我不确定我会如何称呼这两个单独的测试,而且我有点认为哪一个断言破坏了测试。但无论如何,我很想知道其他人对此有何看法,因为我是这个领域的新手 :)
【问题讨论】:
-
此类方法的其他示例可能是添加两个数字、两个范围的交集等。
-
我会使用 Assert.Equals 而不是您冗长的语法。我想这就是我使用 xUnit.net 的原因:P
-
第二个断言需要什么?如果第一个条件为真,则第二个条件也为真,如果对象不相等,情况也是如此。
-
@shahkalpesh:取决于Something.Equals的实现方式
-
@Ruben:没错。关于冗长的问题:在这种情况下,我实际上可以跳过 Is.True ,它会很短。只是想非常清楚:p
标签: unit-testing tdd nunit