代码之家  ›  专栏  ›  技术社区  ›  Loading

并行运行类

  •  0
  • Loading  · 技术社区  · 6 年前

    我对努尼特的平行属性有点困惑:

    假设我有三门课,每门课都有一些测试:

    ClassA
        - Test1
        - Test2
        - Test3
    ClassB
        - Test1
    ClassC
        - Test1
        - Test2
    

    我想同时进行A、B两个等级的考试(我不在乎顺序)

    我也希望在ClassA和ClassB运行时运行ClassC,但在这个类中,我希望保持指定测试的顺序

    所以我的问题是,我应该如何设置属性来获得这样的行为?

    我查了文件 https://github.com/nunit/docs/wiki/Framework-Parallel-Test-Execution 但我还是很困惑

    1 回复  |  直到 6 年前
        1
  •  1
  •   Charlie    6 年前

    开始简单…

    1. 如果你什么都不做 ParallelizableAttribute 然后就没有东西是平行的了。-)

    2. 如果添加 Parallelizable 对于每个夹具,那么三个夹具将并行运行,但单个测试将不会。也就是说,一次最多可以运行三件事,每节课一件。

    3. 如果添加 [Parallelizable(ParallelScope.Fixtures)] 在装配级别,效果与(2)相同。你只有在 几乎所有 你的设备将成功地并行运行,在这种情况下,你将标记那些不能 [NonParallelizable] . 我在帮助人们方面的经验是,太多的人在没有意识到他们的测试在没有被写下来的情况下可能并不总是正确地并行运行。开始时,最安全的方法是默认为非并行,并且只在它对您有效时添加它。

    4. 从(2)开始,将a和b的属性更改为 [Parallelizable(ParallelScope.All)] [Parallelizable(ParallelScope.Self + ParallelScope.Children) . 我喜欢较长的表格,因为它对读者来说更清楚它的作用。这将产生你想要的效果。

    另一个注意事项:您可能应该确保指定测试顺序的任何fixture都不会并行运行。nunit让我们指定parallel和order而不出错。在这种情况下,它只是 开始 按照你给出的顺序进行测试,但这可能不是你想要的。 4。