Assert
的非阻塞对应物是什么,目前像AreEqual
这样的方法(失败时)抛出异常并保持。
我想用报告运行所有测试,而不需要用户进行任何交互。
更新,简单的例子:
Assert.AreEqual(3,5);
Assert.AreEqual(3,5);
只会执行第一个,抛出异常。我想没有例外,没有互动,只是一个报告说两次失败。
答案 0 :(得分:3)
的非阻塞对应物是什么?
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();
答案 1 :(得分:1)
我将给出一个练习答案 - 每次测试写一个一个断言(方法)。这样,如果断言失败,则无论如何都会运行其他测试。
所以你的榜样应该是:
[Test]
public void ThreeShouldEqualFive(){
Assert.AreEqual(3,5);
}
[Test]
public void ThreeShouldEqualFour(){
Assert.AreEqual(3,4);
}
无论如何,这是编写测试的推荐方法(尽管在所有情况下都不可能在每次测试中保持一个断言。)