Аргумент MSBuild, позволяющий консервировать импорт результатов теста, приводит к ошибкам неверного пути

Мы используем SpecFlow для применения практики BDD и Pickles для создания документации.

Наша сборка выглядит так:

  1. строить
  2. развертывание
  3. Тест (используя VSTest)
  4. Создать документацию (используя 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, я с радостью рассмотрю любые запросы на удаление, которые касаются этой проблемы.

По запросу: так я решил. Это больше обходной путь, который работает в моей конкретной ситуации, но в нижней части я объясняю, как я надеюсь, что это будет исправлено в ближайшее время.

  1. Создайте шаг сборки командной строки сразу после шага сборки теста
  2. в качестве инструмента Rename
  3. в качестве аргументов используют "$(build.sourcesdirectory)\TestResults\*.trx" TestResults.trx

Теперь вы можете использовать шаг Visual Studio Build для генерации документации по солям (вам нужно иметь соленья в виде пакета NuGet в вашем проекте)

  1. Как установлено решение $(Build.SourcesDirectory)/yourproject.csproj
  2. В качестве 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, так что, надеюсь, он будет реализован в следующем выпуске, и вы все сможете используйте это так:).

Другие вопросы по тегам