nunit - 是否可以在执行开始之前在运行时重新排序 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_RegisterAndStartShiftAndEnsureInvalidBadge
并nan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge
一个接一个地运行,而不是:
nan4dfc1app01_RegisterAndStartShiftAndEnsureInvalidBadge
与所有其他测试一起运行nan4dfc1app01_
nan4dfc1app02_RegisterAndStartShiftAndEnsureInvalidBadge
与所有其他测试一起运行nan4dfc1app02_
所以本质上,重命名测试用例不会拆分子测试用例。对我不好。
那么,有没有办法在运行时按照我需要的方式更改顺序?
解决方案
用TestCaseSourceAttribute
. 为单个测试方法生成的所有测试用例一起运行。
对测试进行分组的另一种机制是通过夹具。如果您将您的类设置为参数化夹具并使用 TestFixtureSourceAttribute 将其传递给 Web 服务器,那么您可以控制每个夹具内的测试顺序。
您可以将传入的夹具参数保存为实例成员,并在每个测试中使用它。这可能比你正在做的更简单,更容易阅读,因为只有一个对源的引用而不是很多。
推荐阅读
- angular - @ViewChildren 获得未定义的值
- javascript - AJAX 获取,获得相同的功能
- node.js - 将 Sequelize CLI 与 ESM 包一起使用
- python - 如何在kivy中使我的边框图像的角更圆
- python - pymongo.errors.OperationFailure:在 Heroku 上部署聊天机器人时身份验证失败
- python - 为什么我的 psycopg2 不能与 python3 一起使用?
- c++ - 在 C++ 中精确浮点的字符串?
- python - 从 DataFrame 创建字典
- hashicorp-vault - hashcorp vault - 无法使用 API 列出机密,但可以使用 CLI 成功验证
- kendo-ui - Kendo DropDownTree 过滤器不显示节点子级