使用Nunit或Jenkins多次运行测试夹具

3

我有一个测试夹具,其中包含多个测试。我想多次运行此测试夹具以收集一些统计信息,但似乎找不到合理的方法。RepeatAttribute 不能在 TestFixture 上使用。

我可以使用 Nunit 或 Jenkins(带有 nunit 插件)。有什么想法吗?否则,我将编写测试或使用奇怪的批处理脚本。


最好的方法可能是将需要统计数据的测试放在一个完全独立的程序集中。这样,您可以多次执行测试运行器来对程序集进行测试(这应该很简单)。 - Nate Barbettini
3个回答

6

正如Steve所说,参数化的fixture可以起作用,但如果你想运行数百次测试,复制和粘贴那么多属性会变得相当乏味。

NUnit中更好的选择是在fixture上使用TestFixtureSource属性。例如,以下代码将运行您的测试fixture 100次;

[TestFixtureSource("TestData")]
public class MultipleRunFixture
{
    int _counter;

    public MultipleRunFixture(int counter)
    {
        _counter = counter;
    }

    public static IEnumerable<int> TestData =>
        Enumerable.Range(0, 100);

    [Test]
    public void TestMethod()
    {
        // TODO: Add your test code here
        Assert.Pass($"Test run {_counter}");
    }
}

1
你可以将其设置为参数化的 fixture:这样,fixture 将运行与你添加的属性相同的次数:
[TestFixture(4)]
[TestFixture(3)]
[TestFixture(2)]
[TestFixture(1)]
public class MyTestFixture
{       
    public MyTestFixture(int counter)
    {        
    }

0
感谢Steve和Rob的回答。他们提供的所有选项都很好,但我尝试了另一种方法,结果对我的情况来说是最佳解决方案。所以我在这里分享给其他遇到类似问题的人。
我为该测试夹具创建了一个Jenkins作业,并使用cron时间定期重复测试,比如每2分钟运行一次。这样,Jenkins运行了许多次作业,甚至为我收集了统计数据(例如测试失败率)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接