В настоящее время я пытаюсь настроить новый конвейер для нашего решения и не могу получить Visual Studio Test, чтобы найти правильный набор тестов в моем решении.Либо он выбирает библиотеку DLL, которая не содержит никаких тестов (что приводит к сбою задачи), либо, если я укажу свойство testAssemblyVer2
, выдается предупреждение о том, что не удалось найти какую-либо сборку для тестирования.
Конфигурация базовой задачи, с которой мы работаем:
- task: VSTest@2
inputs:
platform: '$(buildPlatform)'
configuration: '$(buildConfiguration)'
searchFolder: '$(System.DefaultWorkingDirectory)'
runInParallel: true
codeCoverageEnabled: true
diagnosticsEnabled: true
Если мы запустим это, мы увидим в выводе следующую конфигурацию (часть):
...
Test assemblies : **\*test*.dll,!**\*TestAdapter.dll,!**\obj\**
...
======================================================
[command]"C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\vstest.console.exe" @d:\a\_temp\66884a11-77b3-11e9-b7cb-25533524cce5.txt
Microsoft (R) Test Execution Command Line Tool Version 16.0.1
Copyright (c) Microsoft Corporation. All rights reserved.
"d:\a\1\s\Tests\Api\FirstController.Tests\bin\Release\netcoreapp2.1\FirstController.Tests.dll"
"d:\a\1\s\Tests\Api\SecondController.Tests\bin\Release\netcoreapp2.1\SecondController.Tests.dll"
"d:\a\1\s\Tests\CreateTranslateStringsFromDeviceConfigurationSettings\bin\Release\netcoreapp2.1\CreateTranslateStringsFromDeviceConfigurationSettings.dll"
"d:\a\1\s\Tests\Api\FourthController.Tests\bin\Release\netcoreapp2.1\FourthController.Tests.dll"
"d:\a\1\s\Tests\Api\FifthController.Tests\bin\Release\netcoreapp2.1\FifthController.Tests.dll"
/Settings:"d:\a\_temp\69a604d0-77b3-11e9-b7cb-25533524cce5.runsettings"
/EnableCodeCoverage
/logger:"trx"
/TestAdapterPath:"d:\a\1\s"
Starting test execution, please wait...
Как вы можетевидите, есть одна сборка CreateTranslateStringsFromDeviceConfigurationSettings
, которая не содержит тестов, но выбрана в качестве кандидата на тесты.Я взял точное исходное имя из своего конкретного решения, чтобы показать, что оно явно не соответствует шаблону, но выбрано.Теперь мы пытаемся избежать этой проблемы, задав собственный шаблон сопоставления.
Если мы создадим задачу с помощью помощника, по умолчанию будет добавлено следующее значение:
testAssemblyVer2: '**\*test*.dll
!**\*TestAdapter.dll
!**\obj\**'
Если мы запустимпри этом мы получаем следующий вывод:
...
Test assemblies : **\*test*.dll !**\*TestAdapter.dll !**\obj\**
...
##[warning]No test assemblies found matching the pattern: **\*test*.dll,!**\*TestAdapter.dll,!**\obj\**.
В выводе вы можете видеть, что список тестовых сборок не разделен запятыми, что дает некоторое указание на то, что значение не понято правильно и, следовательно, может привестив пустой список.
Поэтому мы пытаемся просто скопировать и вставить значения запятых из первого запущенного вывода, который создает следующую конфигурацию и (неудачный) вывод:
testAssemblyVer2: '**\*test*.dll,!**\*TestAdapter.dll,!**\obj\**'
Вывод:
...
Test assemblies : **\*test*.dll,!**\*TestAdapter.dll,!**\obj\**
...
##[warning]No test assemblies found matching the pattern: **\*test*.dll,!**\*TestAdapter.dll,!**\obj\**.
Вывод теперь соответствует первому, но все равно не работает.Таким образом, использование запятых, кажется, не лучший способ.
Так что в четвертом случае я взял значение из документации , которая
testAssemblyVer2: '**\*test*.dll!**\*TestAdapter.dll!**\obj\**'
Нотакже произошел сбой с похожим сообщением об ошибке:
...
Test assemblies : **\*test*.dll!**\*TestAdapter.dll!**\obj\**
...
##[warning]No test assemblies found matching the pattern: **\*test*.dll!**\*TestAdapter.dll!**\obj\**.
Так как правильно определить несколько шаблонов?