我有一套NUnit测试,其中一些测试间歇性失败,可能是因为时间问题。我想找到这些片状单元测试。有没有办法多次重复每个测试而不必在每个测试中放置Repeat()属性?我们经常使用resharper和ncrunch跑步者,但也可以使用nunit gui和console跑步者。
答案 0 :(得分:2)
在NUnit 3中,您可以使用Retry属性:
RetryAttribute
用于测试方法以指定它应该是 如果失败则重新运行,最多重复次数。注意:
目前无法在
RetryAttribute
或任何其他类型的测试套件上使用TestFixture
。只有单一的测试可能 重复。如果测试有意外异常,则返回错误结果并且不会重试。只有断言失败才能触发重试。至 将意外异常转换为断言失败,请参阅
ThrowsConstraint
。
NUnit 2不支持重试,但您可以使用 NUnit-retry 插件(NuGet,GitHub)。使用示例:
private static int run = 0;
...
[Test]
[Retry(Times = 3, RequiredPassCount = 2)]
public void One_Failure_On_Three_Should_Pass()
{
run++;
if (run == 1)
{
Assert.Fail();
}
Assert.Pass();
}