是否可以在执行开始前在 run-time 重新排序 NUnit 测试?
Is it possible to reorder the NUnit tests at run-time before the execution begins?
我们有很多测试需要绕过 Load Balancer 才能直接与特定的 Web 服务器对话。
每个测试都用 TestCaseSource
属性修饰,指定一个函数,该函数在 run-time 确定要命中的 Web 服务器列表。
因此,如果我们有 n 个测试 T1、T2、...、Tn 和 m 个 Web 服务器 W1、W2、...、Wm(在 run-time 处发现),则测试 运行 顺序如下:
T1W1
T1W2
...
T1Wm
T2W1
T2W2
...
T2Wm
...
TnW1
TnW2
...
TnWm
现在,我需要它们以不同的顺序 运行,即:
T1W1
T2W1
...
TnW1
T1W2
T2W2
...
TnW2
...
T1Wm
T2Wm
...
TnWm
我知道我可以使用 TestCaseData.TestName 属性 修改测试名称。但是这样做仍然 运行 子测试用例在一起。例如,见下:
测试 nan4dfc1app01_RegisterAndStartShiftAndEnsureInvalidBadge
和 nan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge
运行 一个接一个而不是:
nan4dfc1app01_RegisterAndStartShiftAndEnsureInvalidBadge
运行 所有其他以 nan4dfc1app01_
开头的测试
nan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge
运行 所有其他以 nan4dfc1app02_
开头的测试
所以本质上,重命名测试用例不会拆分子测试用例。对我不好。
那么,有没有办法按照我需要的方式更改 run-time 的顺序?
TestCaseSourceAttribute
无法做到这一点。为单个测试方法生成的所有测试用例是 运行 在一起。
另一种分组测试的机制是按夹具。如果您将 class 设为参数化夹具并使用 TestFixtureSourceAttribute 将其传递给 Web 服务器,那么您可以控制每个夹具中的测试顺序。
您可以将传入的夹具参数保存为实例成员,并在每个测试中使用它。这可能比你正在做的更简单、更容易阅读,因为只有一个对源的引用而不是很多。
我们有很多测试需要绕过 Load Balancer 才能直接与特定的 Web 服务器对话。
每个测试都用 TestCaseSource
属性修饰,指定一个函数,该函数在 run-time 确定要命中的 Web 服务器列表。
因此,如果我们有 n 个测试 T1、T2、...、Tn 和 m 个 Web 服务器 W1、W2、...、Wm(在 run-time 处发现),则测试 运行 顺序如下:
T1W1
T1W2
...
T1Wm
T2W1
T2W2
...
T2Wm
...
TnW1
TnW2
...
TnWm
现在,我需要它们以不同的顺序 运行,即:
T1W1
T2W1
...
TnW1
T1W2
T2W2
...
TnW2
...
T1Wm
T2Wm
...
TnWm
我知道我可以使用 TestCaseData.TestName 属性 修改测试名称。但是这样做仍然 运行 子测试用例在一起。例如,见下:
测试 nan4dfc1app01_RegisterAndStartShiftAndEnsureInvalidBadge
和 nan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge
运行 一个接一个而不是:
nan4dfc1app01_RegisterAndStartShiftAndEnsureInvalidBadge
运行 所有其他以nan4dfc1app01_
开头的测试
nan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge
运行 所有其他以nan4dfc1app02_
开头的测试
所以本质上,重命名测试用例不会拆分子测试用例。对我不好。
那么,有没有办法按照我需要的方式更改 run-time 的顺序?
TestCaseSourceAttribute
无法做到这一点。为单个测试方法生成的所有测试用例是 运行 在一起。
另一种分组测试的机制是按夹具。如果您将 class 设为参数化夹具并使用 TestFixtureSourceAttribute 将其传递给 Web 服务器,那么您可以控制每个夹具中的测试顺序。
您可以将传入的夹具参数保存为实例成员,并在每个测试中使用它。这可能比你正在做的更简单、更容易阅读,因为只有一个对源的引用而不是很多。