Аргумент MSBuild, позволяющий консервировать импорт результатов теста, приводит к ошибкам неверного пути
Мы используем SpecFlow для применения практики BDD и Pickles для создания документации.
Наша сборка выглядит так:
- строить
- развертывание
- Тест (используя VSTest)
- Создать документацию (используя Pickles)
Этап генерации документации идет после шага "Тест", поэтому мы можем включить результаты теста в "соленые огурцы". Я хочу использовать соленья в качестве шага сборки, чтобы я мог управлять версией солений и дополнительными опциями в каждом решении.
Шаг сборки Visual Studio в TFS2017 выглядит следующим образом:
/t:DocumentationGeneration
/p:Pickles_Generate=True
/p:Pickles_DocumentationFormat=dhtml
/p:Pickles_ResultsFile="$(build.sourcesdirectory)/TestResults/*.trx"
/p:Pickles_OutputDirectory="$(build.artifactstagingdirectory)/PickledDocumentation"
[some more generic parameters that are not relevant here]
Когда я делаю выше, я получаю ошибку "Недопустимый символ в пути" во время сборки. Кажется, это *
вызывая эту ошибку, когда я заменяю ее /p:Pickles_ResultsFile="$(build.sourcesdirectory)/TestResults/testresults.trx"
проблемы вообще нет, только результаты теста не найдены, потому что результаты теста имеют не предиктивный формат:USERNAME_SERVERNAME1234 2017-02-02 09_09_09.trx
Я попытался создать общее имя для файла.trx, но VSTest не поддерживает пользовательские имена. Кто-нибудь еще сталкивался с этой проблемой и есть ли хороший подход к ее решению?
2 ответа
Pickles поддерживает только точное имя файла результатов теста. На сайте проекта GitHub существует проблема, разрешающая использование подстановочных знаков. Как сопровождающий Pickles, я с радостью рассмотрю любые запросы на удаление, которые касаются этой проблемы.
По запросу: так я решил. Это больше обходной путь, который работает в моей конкретной ситуации, но в нижней части я объясняю, как я надеюсь, что это будет исправлено в ближайшее время.
- Создайте шаг сборки командной строки сразу после шага сборки теста
- в качестве инструмента
Rename
- в качестве аргументов используют
"$(build.sourcesdirectory)\TestResults\*.trx" TestResults.trx
Теперь вы можете использовать шаг Visual Studio Build для генерации документации по солям (вам нужно иметь соленья в виде пакета NuGet в вашем проекте)
- Как установлено решение
$(Build.SourcesDirectory)/yourproject.csproj
В качестве buildarguments задаем дополнительные параметры:
/t:DocumentationGeneration /p:Pickles_Generate=True /p:Pickles_DocumentationFormat=dhtml /p:Pickles_ResultsFile="$(build.sourcesdirectory)/TestResults/TestResults.trx" /p:Pickles_ResultsFormat="vstest" /p:Pickles_OutputDirectory="yourdestinationpath"
Как я уже сказал, переименование - это обходной путь, поэтому я расширил сам код Pickles, чтобы включить поддержку подстановочных знаков, и теперь это запрос на извлечение в репо Pickles, так что, надеюсь, он будет реализован в следующем выпуске, и вы все сможете используйте это так:).