Почему Visual Studio 2019 не будет запускать мои модульные тесты? - PullRequest
0 голосов
/ 11 апреля 2020

Я вижу очень странное поведение для тестов NUnit в VS2019, где то же решение отлично работает в VS2017. В моей душе несколько тестовых проектов NUnit.

В VS2017 с установленным расширением NUnit Runner я вижу все свои тесты в окне «Проводник тестов», и кнопка «выполнить все» будет работать и запускать все тесты. , Некоторые разработчики в моей организации используют Resharper вместо расширения NUnit, и это тоже работает.

Я прекратил использовать Resharper, потому что, поскольку VS вводит больше функций, Resharper сделал его настолько медленным, что VS непригоден для использования.

В VS2019 в окне Test Explorer будут показаны все мои модульные тесты (даже без установленного расширения NUnit). Если я нажму «выполнить все», он не запустит никаких тестов, и в окне «Вывод» будет указано 0 обнаруженных тестов. Сотрудники сказали, что Resharper будет запускать все тесты без проблем. Если щелкнуть правой кнопкой мыши один тестовый проект и запустить только эти тесты, некоторые проекты будут запускать тесты, но не все.

Для некоторых проектов я попытался установить пакет nuget NUnit3TestAdapater, и это позволит VS2019 запустить тест этого проекта, если выбран только этот проект. Это не работает для всех проектов, и все равно не работает для «запустить все».

Кто-нибудь знает, что может быть причиной этого и что может это исправить? Я обновил до последней версии NUnit (3.12) и последней версии TestAdapter (3.16) для всех этих проектов.

Это было настоящей болью в течение года, потому что мне нужно сохранить VS2017 и 2019 оба установлен, и мне нужно обучить новых разработчиков тому, как обойти эту странную проблему.

1 Ответ

0 голосов
/ 16 апреля 2020

Решение оказалось сочетанием двух вещей.

  1. В верхнем меню перейдите к Тест> Параметры и отключите «Обнаружение тестов в реальном времени». время из C# и Visual Basi c. NET исходных файлов ". Эта опция несовместима с параметризованными тестами. Проблема в том, что параметризованные тесты не «существуют» в исходном коде, а генерируются тестовым адаптером во время выполнения. Это также устранило проблему, с которой я столкнулся, когда «базовый» тест параметризованного теста обнаруживается в Test Explorer как не запущенный тест, даже если реальными тестами являются только указанные c тестовые примеры. (По моему мнению, это не должно быть включено по умолчанию, потому что параметризованные тесты чрезвычайно полезны, в то время как видеть новые тесты в Test Explorer без компиляции - тривиальное удобство, так как вы должны скомпилировать их так или иначе.)

  2. Использование пакета NuGet для тестового адаптера вместо использования расширения VSIX. Похоже, что для этой части все, что требуется, это то, что по крайней мере один проект в вашем решении ссылается на это. Если хотя бы один проект ссылается на него, все тестовые проекты могут быть запущены. (Это имеет смысл для меня, так как он более совместим с инструментами сборки вне Visual Studio.)

Ура за срыв изменений!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...