在管道 AzureDevops 中过滤 xUnit 测试

Filtering xUnit Tests in pipeline AzureDevops

我似乎没有得到正确的过滤,我正在 运行 测试我不想 运行。

我有

      MySolution  (Solution)
        MyProjectA.Tests
            AAA.Tests
            BBB.Tests
        MyProjectB.Tests
            AAA.Tests               
            

devops 中的任务

      - task: VSTest@2
        displayName: 'VsTest - testAssemblies'
        inputs:    
          testAssemblyVer2: |
            **\bin${{ parameters.buildConfiguration }}\**\*Tests*.dll           
            !**\obj\**
            !**\xunit.runner.visualstudio.testadapter.dll
            !**\xunit.runner.visualstudio.dotnetcore.testadapter.dll
          platform: '${{ parameters.buildPlatform }}'
          configuration: '${{ parameters.buildConfiguration }}'
          searchFolder: '$(System.DefaultWorkingDirectory)'        
          otherConsoleOptions: '/platform:x64 /Framework:.NETCoreApp,Version=v3.1 /logger:console;verbosity="normal" '
          
          
            

我需要了解如何做到

我该怎么做?我需要更改什么?

非常感谢

您可以在 VSTest@2 任务中使用 testFiltercriteria 属性 参考 TestCaseFilter

Run tests that match the given expression.

<Expression> is of the format <property>=<value>[|<Expression>].

Example: /TestCaseFilter:"Priority=1"

Example: /TestCaseFilter:"TestCategory=Nightly|FullyQualifiedName=Namespace.ClassName.MethodName" Warning: The /TestCaseFilter command line option cannot be used with the /Tests command line option.

For information about creating and using expressions, see TestCase filter.

所以在你的情况下可能是

FullyQualifiedName=~MyProjectA

FullyQualifiedName=~MyProjectA.Tests.BBB

有关过滤的更多详细信息,请查看 here

run only tests belonging to MyProjectA

您可以在测试文件中指定项目名称:

- task: VSTest@2
        displayName: 'VsTest - testAssemblies'
        inputs:    
          testAssemblyVer2: |
            **\MyProjectA.Tests\bin${{ parameters.buildConfiguration }}\**\*Tests*.dll           
            !**\obj\**
            ...
      

run just BBB.Tests in MyProjectA

您可以使用 Test filter criteria 过滤来自 BBB.Tests 的测试:

- task: VSTest@2
        displayName: 'VsTest - testAssemblies'
        inputs:    
          testAssemblyVer2: |
            **\MyProjectA.Tests\bin${{ parameters.buildConfiguration }}\**\*Tests*.dll           
            !**\obj\**
            testFiltercriteria: 'TestCategory=BBB'
            ...