如何在 NUNit 中为参数化测试 类 设置 ParallelScope?
How do I set ParallelScope for Parametrized Test classes in NUNit?
我有包含两个测试 classes 和一个用于并行范围的基础 class 的测试套件:
[TestFixture("A")]
[TestFixture("B")]
class Fixture1 : BaseFixture{
//tests}
[TestFixture("A")]
[TestFixture("B")]
class Fixture2 : BaseFixture{
//tests}
[Parallelizable(ParallelScope.Fixtures)]
class BaseFixture{
}
使用此并行化范围,我的测试 运行 与场景 1 in given schema 类似。 我不想并行执行不同的数据。
使用 Fixture1 和 Fixture2 中的 [NonParallelizable] 属性,我达到了场景 2 - 这是测试性能的严重瓶颈。
我想要的只是在classes之间保持并行化,但不在class的不同数据之间保持并行化,就像方案 3 中介绍的那样。
我该怎么做?
复制 TestFixture
属性会复制测试装置,这就是装置 运行 并行的原因。似乎没有解决方案可以让两个灯具并行 运行。
您可以使用 [Parallelizable(ParallelScope.Default)]
覆盖所有使用测试数据的测试装置的并行化。这将按顺序 运行 这些固定装置,同时允许所有其他测试固定装置按顺序 运行。
本质上,没有办法指定一个灯具可以 运行 与某些灯具并行,但不能与其他灯具并行。曾经这是我们计划实现的一项功能,但我不确定它是否仍在路线图上。
您希望每个 fixture 中的单独测试 运行 并行进行吗?根据答案,您可以采取不同的行动方案作为解决方法。
运行 并行测试用例,并允许 fixture 简单地 运行 顺序执行。如果有足够的案例,那可能会给你 "good enough" 吞吐量。
运行 顺序测试用例,并让 fixtures 全部 运行 并行。为此,您必须修改它们以确保它们不会尝试使用相同的驱动程序或共享任何其他状态。
抱歉,这不是一个更好的答案。 :-)
我有包含两个测试 classes 和一个用于并行范围的基础 class 的测试套件:
[TestFixture("A")]
[TestFixture("B")]
class Fixture1 : BaseFixture{
//tests}
[TestFixture("A")]
[TestFixture("B")]
class Fixture2 : BaseFixture{
//tests}
[Parallelizable(ParallelScope.Fixtures)]
class BaseFixture{
}
使用此并行化范围,我的测试 运行 与场景 1 in given schema 类似。 我不想并行执行不同的数据。 使用 Fixture1 和 Fixture2 中的 [NonParallelizable] 属性,我达到了场景 2 - 这是测试性能的严重瓶颈。
我想要的只是在classes之间保持并行化,但不在class的不同数据之间保持并行化,就像方案 3 中介绍的那样。
我该怎么做?
复制 TestFixture
属性会复制测试装置,这就是装置 运行 并行的原因。似乎没有解决方案可以让两个灯具并行 运行。
您可以使用 [Parallelizable(ParallelScope.Default)]
覆盖所有使用测试数据的测试装置的并行化。这将按顺序 运行 这些固定装置,同时允许所有其他测试固定装置按顺序 运行。
本质上,没有办法指定一个灯具可以 运行 与某些灯具并行,但不能与其他灯具并行。曾经这是我们计划实现的一项功能,但我不确定它是否仍在路线图上。
您希望每个 fixture 中的单独测试 运行 并行进行吗?根据答案,您可以采取不同的行动方案作为解决方法。
运行 并行测试用例,并允许 fixture 简单地 运行 顺序执行。如果有足够的案例,那可能会给你 "good enough" 吞吐量。
运行 顺序测试用例,并让 fixtures 全部 运行 并行。为此,您必须修改它们以确保它们不会尝试使用相同的驱动程序或共享任何其他状态。
抱歉,这不是一个更好的答案。 :-)