C# 使用Nunit或Jenkins多次运行TestFixture

C# 使用Nunit或Jenkins多次运行TestFixture,c#,jenkins,nunit,jenkins-plugins,C#,Jenkins,Nunit,Jenkins Plugins,我有一个包含多个测试的TestFixture。我想多次运行这个TestFixture来收集一些统计数据,但似乎找不到合理的方法。RepeatAttribute不能用于TestFixture 我可以使用Nunit或Jenkins(带有Nunit插件)。有什么想法吗?否则,我会将其编码到测试中,或者使用奇怪的批处理脚本。您可以将其设置为一个参数化的装置:然后装置将运行与添加属性相同的次数: [TestFixture(4)] [TestFixture(3)] [TestFixture(2)] [Tes

我有一个包含多个测试的TestFixture。我想多次运行这个TestFixture来收集一些统计数据,但似乎找不到合理的方法。RepeatAttribute不能用于TestFixture


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

您可以将其设置为一个参数化的装置:然后装置将运行与添加属性相同的次数:

[TestFixture(4)]
[TestFixture(3)]
[TestFixture(2)]
[TestFixture(1)]
public class MyTestFixture
{       
    public MyTestFixture(int counter)
    {        
    }

正如Steve所说,参数化的fixture是可行的,但是如果您想运行数百次测试,那么复制和粘贴那么多属性将变得相当乏味

NUnit中更好的选择是在设备上使用属性。例如,以下代码将运行测试夹具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}");
    }
}
[TestFixtureSource(“TestData”)]
公共类多重结构
{
内部计数器;
公共多路配置(整数计数器)
{
_计数器=计数器;
}
公共静态IEnumerable TestData=>
可枚举范围(0,100);
[测试]
公共void TestMethod()
{
//TODO:在此处添加测试代码
Assert.Pass($“测试运行{u计数器}”);
}
}

感谢史蒂夫和罗布的回答。所有这些都是不错的选择,但我尝试了另一种方法,结果证明这是我的案例的最佳解决方案。所以,只要把它放在这里,给任何一个偶然发现它的人


我为测试夹具创建了一个Jenkins作业,并使用cron时间定期重复测试,比如说每2分钟一次。这样,Jenkins多次运行该作业,甚至为我收集统计数据(例如测试失败率)。

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