在 Visual Studio 中多次运行测试?

Ahm*_*mad 11 c# unit-testing visual-studio

默认情况下,当您从 Visual Studio 的测试资源管理器运行单元测试时,它仅运行一次。有没有办法让它运行多次,比如100次之类的?然后在多次运行后,我收到一份报告,说明测试通过/失败的次数以及导致所有失败的原因(如果有)?

注意:我查看了其他一些类似的 Stack Overflow 线程,但没有看到适用于我的情况的解决方案。

Dis*_*ame 7

我认为这是一个完全合理的问题,因为有时由于使用 AutoFixture 或其他有意随机的元素来填充测试模型,测试可能会不稳定。这种随机性很有价值,因为它可以发现测试中不可预见的缺陷和生产代码中的错误。

据我所知,没有专业插件可以为 Visual Studio 提供此功能,但总有编码方法:

public class TestClass
{
    private Random _random;

    public TestClass()
    {
        _random = new Random();
    }

    [Fact]
    public void FlakyTest()
    {
        var number = _random.Next(10);
        Assert.True(number < 7);
    }

    [Fact]
    public void MyFlakyTestWorks100Times()
    {
        for (var i = 0; i < 100; i++)
        {
            var tests = new TestClass();
            tests.FlakyTest();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:显然,在将工作提交到构建管道之前,您需要认真考虑删除该循环测试!