Yaml:如何在 VSTest@2 中排除一些测试

Yaml: How to exclude some tests in VSTest@2

目前,我们正在转向 AzureDevOps。我们有一些在代理上失败的单元测试,但我们没有能力立即修复它们。在我们修复它们之前,我们希望将它们从管道中排除并设置一个所有测试都应该通过的策略,然后一个一个地修复它们。

这么说吧,我有4个exe,分别是ABE_uTest.exe、BBE_uTest.exe、CBE_uTest.exe和DBE_uTest.exe。我想排除 BBE 和 CBE。在文档页面 (AzureDevOps VsTest) 我找到了如何排除文件。

testAssemblyVer2: | # Required when testSelector == TestAssemblies
# *test.dll
# !*TestAdapter.dll
# !
\obj*

所以我假设 *_uTest.exe !BBE* !CBE* 就可以了。但是我错过了一些东西,因为我无法让它发挥作用。它要么不过滤任何东西,要么过滤一切。这是yaml的相应部分。

- task: VSTest@2
  displayName: VsTest - testAssemblies
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: '*_uTest.exe
      !*BBE*'
    searchFolder: '$(BuildPlatform)_$(BuildConfiguration)\testbin\'

testAssemblyVer2 将是设置。我试过只使用一个排除二进制文件以使其更简单。我尝试在开头和结尾使用和不使用 ' 个字符。也尝试在一行和单独的行中但没有成功。我总是收到这条消息:

##[warning]No test sources found matching the given filter '*_uTest.exe !BBE_uTest.exe'

使用 yaml 在 AzureDevOps 中排除文件的正确语法是什么?

符号非常具体,您缺少一个 |并且需要将它放在多行上(可能存在其他符号,这可行)。添加了一个 **\ 用于在每个可能的文件夹中搜索:

- task: VSTest@2
inputs:
  testSelector: 'testAssemblies'
  # note the |
  testAssemblyVer2: |
    **\*_uTest.exe
    !**\*BBE*

为什么是 |,它表示您要输入多个不同的项目。 'Something something2' 表示查找一个很长的名称,其中包含 space。没有 |几行被视为 1 个输入。找不到确切的文档。