【发布时间】:2020-03-12 00:01:23
【问题描述】:
我正在用 C# 开发一个可以在 SSL 或纯文本模式下运行的网络客户端库。两者都需要支持。在以一种或另一种模式工作时,我发现了一些在测试其他东西时可能会意外出现的怪癖。我发现以纯文本或 SSL 模式运行测试来诊断问题非常有用。
我想在我的 CI 服务器上以纯文本和 SSL 模式运行该库。我可以通过使用环境变量启动 dotnet test 来描述要运行的模式很容易做到这一点,但这会为我的 CI 软件产生重复的测试输出,该软件目前是 Appveyor,但很快就会成为 TeamCity。如果单元测试在 SSL 中失败但在纯文本模式下失败,则很难将它们区分开来。
目前,我认为最好的方法是在报告给 CI 软件的每个测试用例的名称前面加上运行类型,但我找不到这样做的方法。不过,我愿意接受其他建议。
我的其他想法:
- 重写所有测试以使用
[Theory]- 这似乎需要大量工作,而且我无法使用构造函数进行设置。我还有许多[Theory]测试,我必须以某种方式弄清楚。 - 为每个不同的测试运行设置不同的 CI 配置 - 现在这很好,但如果我必须针对同一软件的不同版本运行相同的测试,我最终可能会得到 10 个或更多配置。
在这种情况下,这两种方法都不是解决问题的正确方法,我希望有一个更优雅的解决方案,因为我确信我不是唯一遇到此问题的人。
【问题讨论】:
标签: unit-testing .net-core teamcity xunit.net appveyor