xunit.net支持并行测试执行。
我的测试是参数化的(理论)。我遇到的每一个测试都是不同的。下面是一个例子:
public class TestCase1
{
[Theory]
[InlineData("mssql")]
[InlineData("oracle")]
[InlineData("pgsql")]
[InlineData("sqlite")]
public void DoTests(string storage) {}
}
public class TestCase2
{
[Theory]
[InlineData("mssql")]
[InlineData("oracle")]
[InlineData("pgsql")]
[InlineData("sqlite")]
public void DoTests(string storage) {}
}默认情况下,所有测试都执行平行地。可以将它们分组到集合中(借助Collection属性)。
我不能并行地运行所有测试,因为每个测试用例都有自己的db模式。因此,我将所有测试放入具有程序集级别属性的单个集合中:
[assembly: CollectionBehavior(CollectionBehavior.CollectionPerAssembly)]但这也意味着不同存储的测试也是连续运行的。
我想要的是并行地对不同的存储运行测试,但对串行的单个存储运行测试:
=> TestCase1.DoTest("mssql") => TestCase2.DoTest("mssql")
=> TestCase1.DoTest("oracle") => TestCase2.DoTest("oracle")
诸若此类
在xunit.net中有可能吗?
更新:(把它放在这里,因为注释中不支持代码)。正如@BradWilson建议的那样,可以将测试与派生类分开:
public class TestCase1
{
public void DoTests(string storage) {}
}
public class TestCase1_MSSQL
{
[Fact]
public void DoTests(string storage)
{
DoTests("mssql");
}
}
public class TestCase1_Oracle
{
[Fact]
public void DoTests(string storage)
{
DoTests("oracle");
}
}发布于 2015-10-23 17:02:09
我不会用理论和内联数据来做这件事;相反,我会用抽象基类和每个存储方法的具体测试类来实现这一点。这样你就能得到你想要的分组了。
https://stackoverflow.com/questions/33283880
复制相似问题