在管道 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" '
我需要了解如何做到
- 运行 只测试属于 MyProjectA
- 运行 只是 BBB.Tests 在 MyProjectA
我该怎么做?我需要更改什么?
非常感谢
您可以在 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'
...
我似乎没有得到正确的过滤,我正在 运行 测试我不想 运行。
我有
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" '
我需要了解如何做到
- 运行 只测试属于 MyProjectA
- 运行 只是 BBB.Tests 在 MyProjectA
我该怎么做?我需要更改什么?
非常感谢
您可以在 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'
...