【发布时间】:2021-12-28 07:22:50
【问题描述】:
我使用 MSTest 框架进行了一些测试,这些测试运行时间很长。这些测试很有价值,我有时会手动运行它们。但是当我只想运行“所有测试”时,我想默认排除它们。我正在使用 Resharper 测试运行程序来运行测试。
当我将 test test 标记为 [Ignored] 时,我无法再运行它,即使直接选择也不行。
我怎样才能以一种好的方式解决这个问题?
【问题讨论】:
我使用 MSTest 框架进行了一些测试,这些测试运行时间很长。这些测试很有价值,我有时会手动运行它们。但是当我只想运行“所有测试”时,我想默认排除它们。我正在使用 Resharper 测试运行程序来运行测试。
当我将 test test 标记为 [Ignored] 时,我无法再运行它,即使直接选择也不行。
我怎样才能以一种好的方式解决这个问题?
【问题讨论】:
我不知道如何使用 MSTest 实现这一点的任何内置方法。但我看到了一些替代方案:
LongRunningTests)→ 您可以按需手动运行这些测试,也可以在 CI 环境等上运行。Explicit attribute。LongRunningTest 属性,并在 UI 中排除此类别。Release、Debug 和 LoadTest)并使用预处理器指令:#if !LoadTest
[Ignored]
#endif
[TestMethod]
public void TestSomething()
{
// the usual AAA stuff
}
【讨论】:
在我看来,这是使用TestCategoryAttribute 的好方法。
只需标记您的长时间运行的测试:
[TestCategory("LongRunningTest")]
[TestMethod]
public void LongRunningTest()
{
// test
}
然后您可以在构建服务器上参数化 MSTest 的执行。只需使用 the command line parameter /category:!LongRunningTest 进行构建,您想跳过长时间运行的测试。
【讨论】: