NUnit - 如何动态运行测试子集

时间:2015-02-09 22:34:36

标签: c# selenium selenium-webdriver nunit

我正在使用NUnit通过控制台运行程序来驱动Selenium WebDriver测试。因为这些是WebDriver测试(而不是标准单元测试),测试可能会因外部原因而失败,例如网页超时。

我需要能够自动重新运行任何失败的测试,以查看测试是否由于测试违规而失败,或者仅仅因为测试因超时而失败。

我已经将通过/失败状态记录到数据库中,我想要做的是在原始测试运行后立即自动重新运行任何失败的测试。我当然可以手动执行此操作,但这样可以避免自动化测试!

如何动态告诉NUnit在代码中运行一组测试? (我知道如何生成失败测试的列表/数组,但不知道如何将该列表或测试数组传递给NUnit以动态重新运行。

1 个答案:

答案 0 :(得分:2)

我之前做了一些研究。有一项功能要求,但在NUnit 3.0发布之前不会被取消。我也不认为你可以动态执行任何失败的测试,而不需要自己编写自定义属性。但是,有一个名为NUnit retry的项目提供了一点灵活性。 Retry属性可以帮助您,以防UI因外部原因导致测试失败。它为您提供了重试测试n次的选项。

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

取自here