2

我有一套 NUnit 测试,其中一些会间歇性地失败,可能是因为时间问题。我想找到这些易碎的单元测试。有没有办法重复每个测试多次而不必在每个测试上放置一个 Repeat() 属性?我们经常使用 resharper 和 ncunch 运行程序,但也可以访问 nunit gui 和控制台运行程序。

4

1 回答 1

3

单元 3

在 NUnit 3 中,您可以使用Retry属性:

RetryAttribute用于测试方法,以指定如果失败则应重新运行,最多可运行一次。

笔记:

目前无法RetryAttribute在一个TestFixture或任何其他类型的测试套件上使用。只能重复一次测试。

如果测试出现意外异常,则返回错误结果并且不会重试。只有断言失败才能触发重试。要将意外异常转换为断言失败,请参阅 ThrowsConstraint.

单元 2

NUnit 2 不支持重试,但您可以使用NUnit-retry插件(NuGetGitHub)。使用示例:

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();
}

也可以看看

于 2014-10-07T09:25:23.400 回答