如何指定 NUnit 测试应该失败?

sti*_*g_1 5 nunit

有没有办法指定您希望 NUnit 测试失败,这意味着失败应报告为通过,而通过应报告为失败?这在测试您自己的 NUnit 扩展时非常有用。这是我希望能够做的事情的一个例子:

[Test]
[ExpectFail]
public void TypeOf_fail() {
    string str = "abc";
    str.Should().Be.TypeOf<int>();
}
Run Code Online (Sandbox Code Playgroud)

这不会编译,因为 [ExpectFail] 是一个虚构的属性,用于说明我想要做什么,但方法内的代码工作正常。此问题特定于测试 NUnit 扩展,因为您通常可以轻松编写测试以通过,而不是失败。在这种情况下,您需要证明可以使用您正在测试的 NUnit 扩展编写失败的测试。

Wil*_*son 2

怎么样 Assert.Throws<XXXException>(x.DoSomething());

这里的好处是,如果测试通过(即抛出异常),返回值是实际的异常本身,然后您可以询问它并基于此进一步断言。

鉴于在这种情况下您想要测试 NUnit 扩展,我假设它通过进行 Assert 调用来起作用,您可以 Assert.Throws<AssertionException>(...),然后执行上述操作。

我正在考虑编写一些类似的测试管道代码,我可能需要对其进行测试,所以如果我在该领域发现任何其他内容,我会让您知道。