[英]Non-blocking Assert counterpart
什么是Assert
的非阻塞对应物,目前像AreEqual
这样的方法(失败时)抛出异常并保持。
我想用报告运行所有测试,而不需要用户进行任何交互。
更新,简单的例子:
Assert.AreEqual(3,5);
Assert.AreEqual(3,5);
只会执行第一个,将抛出异常。 我想没有例外,没有互动,只是一个报告说两个失败。
什么是
Assert
的非阻塞对应物?
没有一个,因为通常在第一个断言之后知道哪个其他断言失败并没有多大用处。 但是,如果你真的想要,你可以做几件事来捏造它。
一个想法是使用日志框架简单地输出错误消息,特别是在您认为其余测试可能成功的情况下。
_assertLogger.LogErrorIf(a.ID == 0, "a's ID was not set");
另一种方法是将您的断言包装在捕获结果的方法中,然后从断言产生的异常集合中生成AggregateException
。
_assertions.Add(() => Assert.IsNotNull(a));
_assertions.Add(() => Assert.AreNotEqual(0, a.ID));
_assertions.ThrowIfError();
我将给出一个练习答案 - 每次测试写一个断言(方法)。 这样,如果断言失败,则无论如何都会运行其他测试。
所以你的例子应该是:
[Test]
public void ThreeShouldEqualFive(){
Assert.AreEqual(3,5);
}
[Test]
public void ThreeShouldEqualFour(){
Assert.AreEqual(3,4);
}
无论如何,这是编写测试的推荐方法(尽管在所有情况下都不可能在每次测试中保持一个断言。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.