Vstest.console.exe не обнаружил тестов xunit

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

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

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

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

Я также написал об этой проблеме на сайте xUnit codeplex.

Я ознакомился с этим сообщением SO, но ни одно из предложенных решений здесь не имеет смысла.


person eddie.sholl    schedule 29.10.2014    source источник


Ответы (2)


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

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

Затем, когда вы запускаете команду vstest.console.exe, вы ДОЛЖНЫ использовать параметр /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\"

edit: Поскольку библиотеки 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:"."
person Philippe    schedule 08.01.2015
comment
В моем случае xunit.runner.visualstudio.testadapter.dll не копируется, знаете почему? - person frizik; 28.06.2016

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

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

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

person eddie.sholl    schedule 30.10.2014