CI конвейер занимает около 50 минут, и большая часть времени затрачивается на тестирование. Иметь хорошее количество юнит-тестов и тестов на основе данных. Решили запустить тест параллельно, и подход, основанный на этом, сделал c Запуск тестов параллельно в конвейерах сборки
Идея состоит в том, чтобы разбить конвейер на 3 задания
Построить задание : создает двоичные файлы и публикует sh их для артефактов с именем pre-drop.
Тестовое задание : загрузка предварительного отбрасывания артефакта, извлечение файлов, параллельное выполнение тестов с использованием VSTest@2 задачи
Publi sh Job : publi sh артефакты для отбрасывания (для конвейера выпуска).
Не уверен, смог ли я перенести свою идею в .yml.
Тестовое задание
- job : 'TestJob'
pool:
vmImage: windows-latest
strategy:
parallel: 2
dependsOn: 'BuildJob'
steps:
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'current'
downloadType: 'single'
artifactName: 'predrop'
downloadPath: '$(System.ArtifactsDirectory)'
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(System.ArtifactsDirectory)/predrop/predrop.zip'
destinationFolder: '$(System.ArtifactsDirectory)/predrop/Extpredrop'
- task: VSTest@2
inputs:
testSelector: 'testAssemblies'
testAssemblyVer2: |
**\*tests.dll
!**\*TestAdapter.dll
!**\obj\**
searchFolder: '$(System.ArtifactsDirectory)'
vstestLocationMethod: 'location'
vstestLocation: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\TestPlatform\'
otherConsoleOptions: '/platform:x64 /Framework:.NETCoreApp,Version=v3.1'
Проблема в том, что задача VSTest распознает и запускает некоторые тесты, но выдает ошибку в других тестах с последующей ошибкой в некоторых тестах
System.BadImageFormatException : Could not load file or assembly 'Microsoft.Extensions.Logging.Abstractions, Version=3.1.3.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
Format of the executable (.exe) or library (.dll) is invalid.
Двоичные файлы из первого задания сгенерировали Microsoft.Extensions.Logging.Abstractions.dll как часть артефакта.