首页 > 解决方案 > 是否可以在执行开始之前在运行时重新排序 NUnit 测试?

问题描述

我们有很多测试需要绕过负载均衡器才能直接与特定的 Web 服务器对话。

每个测试都装饰有TestCaseSource指定一个函数的属性,该函数在运行时确定要命中的 Web 服务器列表。

因此,如果我们有 n 个测试 T1、T2、...、Tn 和 m 个 Web 服务器 W1、W2、...、Wm(在运行时发现),则测试按以下顺序运行:

T1W1
T1W2
...
T1Wm
T2W1
T2W2
...
T2Wm
...
TnW1
TnW2
...
TnWm

现在,我需要它们以不同的顺序运行,即:

T1W1
T2W1
...
TnW1
T1W2
T2W2
...
TnW2
...
T1Wm
T2Wm
...
TnWm

我了解我可以使用 TestCaseData.TestName 属性修改测试名称。但是这样做仍然会一起运行子测试用例。例如,见下文:

在此处输入图像描述

测试nan4dfc1app01_RegisterAndStartShiftAndEnsureInvalidBadgenan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge一个接一个地运行,而不是:

所以本质上,重命名测试用例不会拆分子测试用例。对我不好。

那么,有没有办法在运行时按照我需要的方式更改顺序?

标签: nunit

解决方案


TestCaseSourceAttribute. 为单个测试方法生成的所有测试用例一起运行。

对测试进行分组的另一种机制是通过夹具。如果您将您的类设置为参数化夹具并使用 TestFixtureSourceAttribute 将其传递给 Web 服务器,那么您可以控制每个夹具内的测试顺序。

您可以将传入的夹具参数保存为实例成员,并在每个测试中使用它。这可能比你正在做的更简单,更容易阅读,因为只有一个对源的引用而不是很多。


推荐阅读