nunit-console
似乎是这样的(params:/nologo /wait /labels ...
)
在测试开始时,它仅输出每个测试的标签,如下所示:
***** Our.Tests.Bla
... here come some Console.WriteLine
// Note that in case Our.Tests.Bla fails, nothing is reported here immediately
***** Our.Tests.Blub
... here come some Console.WriteLine
***** Our.Tests.Foo
... here come some Console.WriteLine
如果任何测试失败,它只报告完整运行结束时的测试失败。
通常这很好,但我们也通过NUnit运行一些相互依赖的集成测试,有时一个测试挂起,因为之前的测试失败了。
问题是,当一个测试挂起时,您看不到哪个/以前的测试是否失败,使得快速追踪问题变得更加困难。 (特别是当测试挂在测试服务器计算机上时,或者您可能只有一个中止运行的日志。)
我真的更喜欢让NUnit在开始下一次测试之前立即报告失败的测试,包括详细错误。这可能吗?
答案 0 :(得分:4)
你可以通过一种方法在你的测试文件中进行拆解,该文件在每次测试完成后运行,如果测试失败,则可以输出测试名称。
[TearDown]
public void TearDown()
{
var status = TestContext.CurrentContext.Result.Status;
if(status != TestStatus.Passed)
Console.WriteLine("Test Failed: {0}", TestContext.CurrentContext.Test.FullName);
}
答案 1 :(得分:1)
/stoponerror
选项不是您要求的选项,但它可能会达到您想要的效果。
答案 2 :(得分:1)
此答案基于Andrew's answer
NUnit 3中的某些类已更改,因此TearDown
方法也需要更改。结果如下:
[TearDown]
public void TearDown()
{
var status = TestContext.CurrentContext.Result.FailCount;
if (status > 0)
Console.WriteLine("Test Failed: {0}\r\nMessage:\r\n{1}",
TestContext.CurrentContext.Test.FullName,
TestContext.CurrentContext.Result.Message);
}
答案 3 :(得分:0)
你可以使用/标签。这至少可以帮助您找到失败的测试。