C# 什么是测试;“后代”;在努尼特3?

C# 什么是测试;“后代”;在努尼特3?,c#,nunit,C#,Nunit,在阅读之后,我承认我对测试如何并行运行的“后代”感到困惑。在我看来,在某些情况下,我希望标记为[Test]的所有方法彼此并行运行,也希望与不同测试夹具类中的其他方法并行运行。例如: [TestFixture] [可并行化(ParallelScope.All)] 类固定器a { [Test]public void TestCaseA_One(){} [Test]public void TestCaseA_Two(){} } [测试夹具] [可并行化(ParallelScope.All)] 类固定器

在阅读之后,我承认我对测试如何并行运行的“后代”感到困惑。在我看来,在某些情况下,我希望标记为
[Test]
的所有方法彼此并行运行,也希望与不同测试夹具类中的其他方法并行运行。例如:

[TestFixture]
[可并行化(ParallelScope.All)]
类固定器a
{
[Test]public void TestCaseA_One(){}
[Test]public void TestCaseA_Two(){}
}
[测试夹具]
[可并行化(ParallelScope.All)]
类固定器B
{
[Test]public void TestCaseB_One(){}
[Test]public void TestCaseB_Two(){}
}
我在上面的期望是,所有4个测试用例方法都并行运行,而不考虑彼此。如果不清楚“后代”是什么(坦率地说,nunit是如何构造测试的,这可能是理解这一点所必需的),我不知道会发生什么。因此,我的问题是:

  • ParallelScope.All
    是我想要的效果所必需的吗?或者仅仅使用
    [Parallelizable]
    就足够了吗
  • 在上面的例子中,“后代”是什么?我假设测试夹具本身没有实质用途;这最终归结为一个执行方法的简单列表
  • 后代意味着等级制度;nunit测试层次结构是什么样的?我可以看到类如何构建测试的层次结构(继承,但为什么要?),但方法如何成为“后代”?总的来说,我猜只是对测试结构感到困惑

  • 简短回答:这与在测试中使用继承无关。:-)

    更长:

    NUnit是一个xunit风格的框架,如SUnit、JUnit、xunit.net、MbUnit等

    xunit的基本设计模式是众所周知的复合模式。也就是说,“测试”要么是单个测试用例,要么是多个测试的组合。所以,如果我们使用下面的代码

    名称空间My.Tests
    {
    公共类设备
    {
    [测试]
    public void SimpleTest(){}
    [测试用例(1,2,3)]
    [测试用例(4,5,6)]
    [测试用例(7,8,9)]
    公共void参数化测试(int x,int y,int z);
    }
    }
    
    。。。以下每一项都是NUnit中的“测试”

  • 我的
  • 我的。测试
  • 我的测试
  • My.Tests.SomeFixture.SimpleTest
  • My.Tests.SomeFixture.ParameterizedTest
  • My.Tests.SomeFixture.ParameterizedTest(1,2,3)
  • My.Tests.SomeFixture.ParameterizedTest(4,5,6)
  • My.Tests.SomeFixture.ParameterizedTest(7,8,9)
  • 项目1、2、3和5具有子项。第4、6、7和8项不适用

    例如,ParameteredTest(1,2,3)是ParameteredTest的后代, 这是某个装置的后代,这是我的测试的后代, 这是我的后代。此外,组件本身也是一个测试 我列出的所有内容都是从集合中派生出来的

    将他们称为“后代”是相当常见的,尽管这很容易 对术语的O-O用法感到困惑。事实上,这个术语来源于 继承在内部被用来实现模式的事实。但这对用户来说是不可见的,考虑“包含的测试”可能比“依赖的测试”更有用

    但是请注意,较高级别的测试确实“依赖”于较低级别的测试,因为除非较低级别通过测试,否则较高级别的测试无法通过

    更新-

    [Parallelizable]
    相当于
    [Parallelizable(ParallelScope.Self)]

    在编写代码时,这两个装置可以彼此并行运行,成员测试也可以并行运行


    如果将属性更改为
    [Parallelizable]
    ,那么当每个装置中的成员测试按顺序运行时,装置将并行运行。

    简短回答:这与在测试中使用继承无关。:-)

    更长:

    NUnit是一个xunit风格的框架,如SUnit、JUnit、xunit.net、MbUnit等

    xunit的基本设计模式是众所周知的复合模式。也就是说,“测试”要么是单个测试用例,要么是多个测试的组合。所以,如果我们使用下面的代码

    名称空间My.Tests
    {
    公共类设备
    {
    [测试]
    public void SimpleTest(){}
    [测试用例(1,2,3)]
    [测试用例(4,5,6)]
    [测试用例(7,8,9)]
    公共void参数化测试(int x,int y,int z);
    }
    }
    
    。。。以下每一项都是NUnit中的“测试”

  • 我的
  • 我的。测试
  • 我的测试
  • My.Tests.SomeFixture.SimpleTest
  • My.Tests.SomeFixture.ParameterizedTest
  • My.Tests.SomeFixture.ParameterizedTest(1,2,3)
  • My.Tests.SomeFixture.ParameterizedTest(4,5,6)
  • My.Tests.SomeFixture.ParameterizedTest(7,8,9)
  • 项目1、2、3和5具有子项。第4、6、7和8项不适用

    例如,ParameteredTest(1,2,3)是ParameteredTest的后代, 这是某个装置的后代,这是我的测试的后代, 这是我的后代。此外,组件本身也是一个测试 我列出的所有内容都是从集合中派生出来的

    将他们称为“后代”是相当常见的,尽管这很容易 对术语的O-O用法感到困惑。事实上,这个术语来源于 继承在内部被用来实现模式的事实。但这对用户来说是不可见的,考虑“包含的测试”可能比“依赖的测试”更有用

    但是请注意,较高级别的测试确实“依赖”于较低级别的测试,因为除非较低级别通过测试,否则较高级别的测试无法通过

    更新-

    [Paralleli