2017-02-02 22 views
2

Мы используем SpecFlow для применения методов BDD и Pickles для создания документации.Аргумент MSBuild для получения результатов теста импорта соленья вызывает ошибку незаконного пути

Наша сборка выглядит следующим образом:

  1. Сложение
  2. Deploy
  3. тест (с использованием VSTest)
  4. Сформировать документацию (с использованием соленья)

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

Студия Сложение шаг Визуальная в 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" нет никаких проблем, только TestResults не найдены, потому что TestResults находятся в не предсказательной формате:
USERNAME_SERVERNAME1234 2017-02-02 09_09_09.trx

Я попытался посмотреть в генерации общего имени для файла .trx, но VSTest не поддерживает пользовательские имена. Кто-нибудь еще столкнулся с этой проблемой и есть ли хороший подход к ее решению?

+1

Возможно, нет другого выбора, кроме как определить точное имя файла. Это не так сложно, это встроенная функциональность msbuild, принцип заключается в передаче пользовательского «PicklesResultsDir» в проект, и при работе с проектом MSbuild ищет файлы с ''. Вы не говорите, каково ваше решение/макет проекта, поэтому я не могу сказать вам, где именно поставить эту логику. – stijn

ответ

2

Соленья поддерживают только точное имя файла результатов теста. На сайте проекта GitHub есть issue, позволяющий использовать подстановочные знаки. Будучи соавтором компании Pickles, я с удовольствием рассмотрю любые запросы на тягу, направленные на решение этой проблемы.

+0

Привет @ dirk-rombauts, спасибо за ваш замечательный продукт. Я посмотрю на него и, может быть, могу даже исправить ошибку! (В любом случае у меня есть реальная тестовая версия :)). Сейчас я решил это, переименовав файл .trx с другим шагом сборки. – AutomatedChaos

+0

Я рад, что вы нашли способ заставить его работать на вас! Не стесняйтесь спрашивать, есть ли другие вещи, связанные с соленьями, с которыми я мог бы вам помочь. –

+0

@ Cece-MSFT сделано. Будет обновляться, когда это необходимо (например, подстановочные знаки поддерживаются). – AutomatedChaos

0

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

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

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

  1. As Решение установить $(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" 
    

Как я уже говорил, переименование немного работы вокруг, так что я расширил код самого соленья включить поддержку подстановочной, и теперь a pull request in the pickles repo, так что, надеюсь, он будет реализован в следующем выпуске, и вы все можете использовать его таким образом :).