将 TestCaseFilter 与 VSTest 和本机单元测试结合使用

Using TestCaseFilter with VSTest and Native Unit Tests

我无法 运行 使用按类别排除某些测试的 /TestCaseFilter 进行 vstest。如果我在 Visual Studio 2017 中使用 "Test Explorer" 并按 "Traits" 过滤它工作正常但最终我希望能够编辑 TFS 构建定义并从 [=42= 中排除某些测试]在构建服务器上。

我使用下面的示例将 "TestCategory" 属性添加到某些测试: http://www.ademiller.com/blogs/tech/2014/04/test-categories-for-visual-c/

我尝试了各种版本的命令行,但无法让 vstest 识别我的 "TestCategory" 过滤器:

https://blogs.msdn.microsoft.com/vikramagrawal/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter/

https://github.com/Microsoft/vstest-docs/blob/master/docs/filter.md

https://docs.microsoft.com/en-us/visualstudio/test/vstest-console-options?view=vs-2019

vstest.console.exe /TestCaseFilter:"TestCategory=Slow" "D:\MyStuff\Project.Tests.dll" /Platform:x64 /InIsolation'

我收到以下错误: 没有测试与 D:\MyStuff\Project.Tests.dll"

中给定的测试用例过滤器 TestCategory=Slow 匹配

我试过转义字符、不同类型的引号、括号,但都没有用。如果我将过滤器设置为 "TestCategory!=Slow",所有测试都将执行,即使是较慢的测试!

感谢任何帮助。谢谢。

已经两年多了,但这终于奏效了。

在头文件中,我声明如下:

#define EXPENSIVE_TEST_METHOD(name) \
  BEGIN_TEST_METHOD_ATTRIBUTE(name) \
     TEST_OWNER(L"Expensive") \
  END_TEST_METHOD_ATTRIBUTE() \
  TEST_METHOD(name)

然后我可以在单元测试中使用 EXPENSIVE_TEST_METHOD 代替 TEST_METHOD

我们现在使用 Azure DevOps Server 2019,所以在 Visual Studio 测试任务中,我现在可以在 CI 构建上添加以下测试过滤器:

在命令行上,您现在可以执行如下操作:

vstest.console.exe "%MyTestProjectDll%" /Platform:x64 /InIsolation /TestCaseFilter:"Owner!=Expensive"