繁体   English   中英

非阻塞断言对应

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM