【问题标题】:NUnit - how to dynamically run a subset of testsNUnit - 如何动态运行测试子集
【发布时间】:2015-02-09 22:34:35
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# selenium selenium-webdriver nunit


    【解决方案1】:

    我之前对此进行了一些研究。有一个要求的功能,但在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

    【讨论】:

    • 感谢您的想法,不幸的是我无法让 NUnit-retry 为我工作。我被困在通过 NuGet 获取,包会安装,但没有 dll。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    相关资源
    最近更新 更多