2014-10-29 3 views
9

Я собираю новый стек модульных тестов, которые будут выполняться вместе как задание CI. Я использую vstest.console.exe вместо mstest.exe, главным образом, за его способность запускать тесты из нескольких фреймворков, но сейчас фокус - это несколько библиотек xUnit. Работы выполняются как часть трубопровода Дженкинса.Нет xunit-тестов, обнаруженных vstest.console.exe

Я проверил все успешно на пару dev-боксов, но досадно обнаружение теста не работает ни на одном из блоков сборки CI. Это происходит после добавления тестового адаптера 0.99.8 xUnit vsix (также тестируемого с 0.99.7). Плагины xUnit строятся против версии 4.5 с версией xUnit версии 2.0.0.2378 beta nuget.

Я воспроизвел симптомы с помощью простейшей возможной DLL, используя один открытый метод тестирования, отлично работая в своей собственной коробке, не работая над любыми сборками. Обстановка развертывания довольно проста, с установкой VS2012 и адаптером xUnit для тестирования в Windows 2012.

Я включил ведение журнала TpTrace через конфигурационные файлы vstest exe, и все выглядит нормально. Наверное, я ищу способ дальнейшего устранения проблемы (возможно, трассировки для процесса обнаружения xUnit) или обходной проблемы. Я бы предпочел сохранить использование консоли vstest для простоты запуска нескольких фреймворков.

Я написал этот вопрос через сайт xUnit codeplex.

Я проверил это SO post, но ни одно из предлагаемых решений не имеет смысла здесь.

ответ

4

ОК, так что проблема решена, но после некоторых разочарований по устранению неполадок, которые я расскажу в случае, если это будет полезно для кого-то. Проблема заключалась в том, что xunit.execution.dll не был доступен в той же папке, что и библиотеки DLL, содержащие тесты. Это необходимо для обнаружения xunit. Я только получил здесь:

  • Установка HKCU \ Software \ Outercurve Foundation \ xUnit.net \ Visual Studio Test Plugin \ MessageDisplay = Diagnostic (это должно быть возможно с помощью файла runsettings но не подхватили, а не можно с помощью VS инструменты опции XUnit страница, потому что его не в состоянии открыть)
  • vstest Теперь выплевывает «Пропуск xunitTests.dll (без ссылки на xUnit.NET)»
  • Это сообщение на самом деле означает, что xunit.dll и xunit.execution .dll не были найдены в папке

Проблема решена d, убедившись, что dll копируется в эту папку в сборках.

21

Он берет меня некоторое время, чтобы найти решение, как использовать vstest.console.exe и XUnit для VS2013, так что я думаю, что это стоит время, чтобы объяснить здесь, как я сделал для всех ...

Первый шаг чтобы следовать поясняемому описанию here, чтобы установить пакет nuget до выпуска xunit.runner.visualstudio в проектах xunit, которые нуждаются в нем для запуска теста xunit из Visual Studio.

Затем, когда вы запускаете команду vstest.console.exe, вы MUST использовать параметр /TestAdapterPath.

Ваша командная строка должна выглядеть как-то (путь к адаптеру XUnit здесь по сравнению с тем, вы можете поместить его в абсолютной или адаптировать в зависимости от активного каталога):

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" c:\path\to\your\assembly.to.test.dll /TestAdapterPath:".\packages\xunit.runner.visualstudio.0.99.9-build1021\build\_common\" 

редактирования: Поскольку адаптер dll копируются в выходную папку, мы можем упростить командную строку, дающую путь "." к /TestAdapterPath опции:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" c:\path\to\your\assembly.to.test.dll /TestAdapterPath:"." 

Для получения дополнительной информации, он работает также с NUnit, NuGet пакет NUnitTestAdapter и команды:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" c:\path\to\your\assembly.to.test.dll /TestAdapterPath:"." 
+0

I мой случай xunit.runner.visualstudio.testadapter.dll не копируется, ты знаешь почему? – frizik

+0

Отлично! TestAdapterPath запустил мои тесты mstest. – Drutten

Смежные вопросы