我有两个类TestClass1,TestClass2
我在测试项目的AssemblyInfo.cs文件中通过汇编设置了MaxParallel线程:
[assembly:Xunit.CollectionBehaviorAttribute(MaxParallelThreads = 4)]
参考 Set maximum parallel threads
我已经安装了xunit-2.0.0-beta4-build2738(Prerelease)。还安装了Xunit runner来查找测试。
从我的知识和研究中可以看出,Xunit并没有在同一个集合中并行运行测试。 参考 Using test collections in xUnit.net v2这就是为什么对于以下两个类我使用了不同的集合。
Visual Studio 2013找到我的测试但是当我运行所有测试时,它仍然会连续运行测试。我希望它们并行运行。
如果有人可以提供帮助那就太棒了!
我的代码如下:
命名空间1
namespace name1
{
public class MFixture
{
}
[CollectionDefinition("Test1")]
public class CollectionClass : ICollectionFixture<MFixture>
{
}
[Collection("Test1")]
public class TestClass1
{
// variables
public TestClass1()
{
//code
}
[Fact]
public void method1()
{
//code
}
[Fact]
public void method2()
{
//code
}
}
}
命名空间2
namespace name2
{
public class MFixture1
{
}
[CollectionDefinition("Test2")]
public class CollectionClass1 : ICollectionFixture<MFixture1>
{
}
[Collection("Test2")]
public class TestClass2
{
// variables
public TestClass2()
{
//code
}
[Fact]
public void method12()
{
//code
}
[Fact]
public void method22(){
{
//code
}
}
}
其他参考
How to run Selenium tests in parallel with xUnit
XUnit.net attributes
XUnit.net issues
答案 0 :(得分:1)
似乎Visual Studio不支持并行运行测试。我没有使用您询问的确切版本进行测试,但已发现other comments同样多的说法。 As suggested,从命令行运行应该有效。
对我来说,我正在使用VS2015,dnx 1.0.0-rc1-final,xunit 2.1.0,xunit.runner.dnx 2.1.0-rc1-build204并且可以确认VS Test Explorer是愚蠢的。
根据the docs:
默认情况下,每个测试类都是一个唯一的测试集合。
因此,考虑到这些人为的“测试”,应该很容易看出它们是否并行运行:
Visual Studio:
命令行:
答案 1 :(得分:0)
在xUnit中,每个测试类都是一个独特的测试集合。同一测试类中的测试不会彼此并行运行。
因此,为了实现这一点,您需要将测试保存在不同的集合中(您希望并行运行),但这不是解决问题的有效方法。
我根据我的知识和我在互联网上获得的内容回答了这个问题,你也可以参考this link