NUnit使用单独的测试作为后续测试的“设置”

时间:2017-05-22 12:21:46

标签: c# unit-testing nunit

如果某些必要的设置也作为测试失败,我试图弄清楚如何让测试失败为“不确定”。

这是我正在尝试做的一个过于简化的例子,但希望它说明了这一点:

[Test] public void TestSetter() {
  Assert.That(() => myInstance.Property = "test", Throws.Nothing);
}

[Test] public void TestGetter() {
  try { TestSetter(); } catch (AssertionException) {
    Assert.Inconclusive("Unable to test, prereq failed");
  }
  Assert.That(myInstance.Property, Is.EqualTo("test"));
}

这似乎不起作用,如果我强制TestSetter测试失败,两者仍显示'失败'结果,而不是TestGetter导致'不确定'。我逐步完成了代码,它肯定会进入Assert.Inconclusive调用,但似乎早期AssertionException仍然优先。

有没有办法让这个正确地报告'不确定'?

使用C#7,使用NUnit 3.6.0

1 个答案:

答案 0 :(得分:1)

尝试升级到NUnit Framework v3.6.1,看看它是否按预期运行。

v3.6.0中有关于捕获AssertionExceptions的更改,后来又被还原了。

有关详细信息,请参阅https://github.com/nunit/nunit/issues/2043。总结一下 - 你应该知道,捕获AssertionException并不是一个严格支持的编写测试的接口,并且可能值得重构,以不同的方式测试安装成功。