无法在Visual Studio中并行运行XUnit测试

时间:2014-09-18 18:31:47

标签: unit-testing xunit

我有两个类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

2 个答案:

答案 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

  

默认情况下,每个测试类都是一个唯一的测试集合。

因此,考虑到这些人为的“测试”,应该很容易看出它们是否并行运行:

image

Visual Studio:

image

命令行:

image

答案 1 :(得分:0)

在xUnit中,每个测试类都是一个独特的测试集合。同一测试类中的测试不会彼此并行运行。

因此,为了实现这一点,您需要将测试保存在不同的集合中(您希望并行运行),但这不是解决问题的有效方法。

我根据我的知识和我在互联网上获得的内容回答了这个问题,你也可以参考this link