Проблема с MSTest Дженкинса

#hudson #mstest #jenkins

#хадсон #mstest #дженкинс

Вопрос:

Я настроил Jenkins в качестве CI для проекта, который использует Mercurial в качестве системы управления версиями. Я использую плагин MSTest в Jenkins для просмотра результатов теста, и я написал команду bat для генерации файла результатов теста

 del results.trx
mstest /testcontainer:ExampleTestProject1bindebugTestProject2.dll /resultsfile:results.trx
  

выдает ошибку в консоли с надписью File «ExampleTestProject1bindebugTestProject2.dll «не найдено»

при каждой сборке создается папка под %WORKSPACE% с новым именем (имя_системы_компьютера 2011-06-08 13_04_11). В том, что тестовая dll находится в вызываемом каталоге. Как я могу получить путь к этой DLL, потому что имя каталога изменяется при каждой сборке?

Он работает нормально, когда я использовал абсолютный URL, такой как «c:ExampleTestProject1bindebugTestProject2.dll «

Как мы можем ссылаться на недавно созданную dll? Нужно ли добавлять тестовый DLL-файл в репозиторий?

Ответ №1:

Дженкинс запускает bat-файлы с %WORKSPACE% в качестве текущего каталога.

Как указано в сообщении об ошибке, указан неверный относительный путь к тестовому контейнеру. Я могу думать о двух вещах, которые могут быть проблемой здесь:

  • Структура папок под %WORKSPACE% не соответствует вашему относительному пути. Добавление cd самого по себе в bat-файл покажет на выходе сборки, где это находится. Вы также можете использовать ссылки в веб-интерфейсе Jenkins для просмотра рабочей области.

  • Вы создаете другую цель msbuild в Jenkins, например, release. Тогда bin debug может не существовать.

Комментарии:

1. при каждой сборке создается папка под %WORKSPACE% с новым именем (имя_системы_компьютера 2011-06-08 13_04_11). В том, что тестовая dll находится в вызываемом каталоге. Как я могу получить путь к этой DLL, потому что имя каталога изменяется при каждой сборке?

Ответ №2:

Папка «имя_системы_компьютера 2011-06-08 13_04_11» не создана Дженкинсом во время сборки, но она создается mstest при выполнении теста. Корневой папкой при вызове mstest является корневая папка workspace, поэтому файл testcontainer следует указывать из корня workspace.

Например, скажите, находится ли DLL-файл под C:jenkinsjobs\workspaceTestProject1bindebugTestProject2.dll (предположим, что ваш jenkins установлен под c:jenkins ).

Команда должна быть (относительно корневой папки рабочей области):

mstest /testcontainer:TestProject1bindebugTestProject2.dll /resultsfile:results.trx