如何在自己的进程中执行测试类中的每个单独测试

时间:2018-01-18 12:26:38

标签: c# parallel-processing nunit tdd

我们在项目中使用 C# NUnit 3.6.1 ,我们考虑并行测试执行以减少持续时间。据我所知,可以将TestFixture的执行与程序集中的类的Parallelizable - 属性并行。我们希望进一步平行测试类中标有TestTestCase的所有测试。

典型的测试类如下:

[TestFixture]
    public class MyTestClass
    {

      private MySUT _sut;
      private Mock<IDataBase> _mockedDB;

      [SetUp]
      public void SetUpSUT()
      {
        _mockedDB = new Mock<IDataBase>();
        _sut = new MySUT(_mockedDB.Object);
      }

      public void TearDownSUT()
      {
        _mockedDB = null;
        _sut = null;
      }

      [Test]
      public void MyFirstTC()
      {
        //Here do some testing stuff with _sut
      }

      [Test]
      public void MySecondTC()
      {
        //Here do some testing stuff with _sut again
      }
    }

正如您所看到的,我们有一些字段,我们在每个测试中使用它们。为了更好地分离,我们考虑在自己的过程中执行每个单独的测试。我不知道该怎么做,或者我们是否必须改变不同的东西以使并行执行成为可能?

提前致谢!

3 个答案:

答案 0 :(得分:3)

是的,你可以在单独的线程(不是进程)中运行单独的测试,从NUnit 3.7开始 使用<iframe src= "/path/" class="responsive-iframe" frameborder="0" scrolling="no"></iframe>参数到ParellelScope属性。来自NUnit documentation

ParallelScope枚举
这是一个Parallelizable枚举,用于指定哪些测试可以并行运行。它适用于它出现的测试和任何从属测试。它的定义如下:

[Flags]

答案 1 :(得分:1)

NUnit没有内置方法在单独的进程中运行单个测试。它允许您在单独的进程中运行整个程序集或在单独的线程上的程序集中单独进行测试,正如您已经发现的那样。

过去这个问题已经成为NUnit的可能扩展,但到目前为止从未采取过行动,因为对它的需求似乎并不是很广泛。

恐怕不是一个真正的答案。 : - (

答案 2 :(得分:0)

在VSTS中,您可以选中一个框来隔离测试。您也可以并行或串行运行。在Visual Studio中,我不认为它显而易见/可能这样做。如果它在VSTS中可能,则可能有一个命令行可用于传递适当的开关。

相关问题