【发布时间】:2021-08-14 21:11:28
【问题描述】:
我想将我的 dotnet core nUnit 测试配置为默认禁用集成测试,允许所有非集成测试“默认”运行,并且在 CI 中还添加了集成测试。重要的是我不必装饰“默认”单元测试——这样就不会忘记正确标记它们,导致它们无法按预期运行。
到目前为止,我一直在尝试通过用[Explicit, Category("Integration")] 装饰它们来标记集成测试,例如:
[TestFixture, Explicit, Category("Integration")]
public class IntegrationTests {...}
[TestFixture]
public class UnitTests {...}
使用该设置dotnet test 可以正常工作-UnitTests 中的测试运行,IntegrationTests 被跳过。
但是,我很难通过 --filter 参数来运行默认设置和集成测试。运行 dotnet test --filter TestCategory=Integration仅运行集成测试。
我能做的最好的事情是结合FullyQualifiedName~Test(我的命名空间以Test开头)——dotnet test --filter "TestCategory=Integration|FullyQualifiedName~Test"。
这可行,但很少有机会(没有充分理由)有人使用不同的根命名空间。
(仅供参考:我在 3.17.0 及以下版本中使用 NUnit 3.12.0 和 NUnit3TestAdapter 4.0.0-beta.2 来避免使用 known issues with filters)
【问题讨论】:
-
假设所有测试都以“Test”开头,我希望您的解决方法过滤器表达式能够运行 所有 测试,包括 SomeOtherCategory 中的测试。
-
好点!结果与
--filter "FullyQualifiedName~Test"相同——不是我想要的:-(
标签: c# unit-testing .net-core nunit