Run/Exclude 构建定义 Team Foundation Server 2015 中的特定测试

Run/Exclude Specific Tests in Build Definition Team Foundation Server 2015

在我们的一个构建定义中,我试图将 'Visual Studio Test' 构建步骤配置为 运行 一组特定的测试。

有一个 'Test Filter critera' 框(下方),但这似乎没有任何效果,运行无论如何都要进行所有测试。它不像 VS2015 中测试资源管理器中的搜索过滤器框,并且有一些对 'TestCaseFilter' 的引用,但这不适用于此处(并且可能仅适用于 TFS2012)。

这可以用于实际过滤测试,还是我应该以其他方式进行(例如提供设置文件?)

事实上,我们正在使用 Xunit 进行单元测试。

测试筛选条件字段是筛选测试的最佳方式。您必须向测试添加属性才能对测试进行分类。这是解释此功能的 post:

https://dotnetcatch.com/2016/03/11/vststfs-visual-studio-test-task-filter-criteria/

测试过滤条件 从测试程序集文件中过滤测试。此选项与控制台选项 /TestCaseFilter of vstest.console.exe 的工作方式相同,您可以使用 vstest.console.exe 命令行测试它是否有效。

作为替代,您可以在测试程序集中指定测试。此字段指定应从中挑选测试的测试程序集。

  • 可以使用通配符
  • 可以指定多个路径,用分号分隔
  • 路径是相对于源目录的

如果目标是从 运行 中排除可以通过

完成的测试

TestCategory!={name}

在我的例子中,我通常使用 Integration 或 Manual 来指示 non-CI 测试,所以我的过滤器是

TestCategory!=Integration&TestCategory!=Manual

对于那些(像我一样)有更具体问题的人,必须排除某个项目的所有测试,请在 "Test Assemblies" 字段中使用以下语句:

!**\*[ProjectName]*.dll

就我而言,我有一个项目包含大量 UI 测试,这些测试被设置为单元测试。最初,代理也会尝试 运行 这些测试,而它们应该只在特定版本中 运行。修复示例:

这确保忽略该项目中的所有测试,即使 dll 名称中包含 "tests"。