Почему xUnit Runner не находит мои тесты
у меня есть xUnit.net Проверьте следующим образом:
static class MyTestClass
{
[Fact]
static void MyTestMethod()
{
}
}
плагин xUnit для VS 2012 говорит:
тесты не найдены для запуска.
TestDriven.net работает он отлично но упоминает что-то о ad hoc:
1 пройдено, 0 не удалось, 0 пропущено (см. "список задач"), заняло 0,47 секунды (ad hoc)
TeamCity, xunit.gui.exe и xunit.console.exe и Visual Studio также не может найти TestMethod
(Я xunit.runner.visualstudio установлен и VS видит некоторые тесты.)
что это дает?
8 ответов:
TL; DR ваши тестовые классы должны быть
public(но ваши методы тестирования могут бытьprivateи/илиstatic)
по соображениям эффективности авторы xUnit решили не использовать
BindingFlags.NonPublicпри поиске тестовых классов в runner (таблицы метаданных MSIL не индексируютсяprivate(/internal) классы в той же степени, следовательно, существует значительная разница в производительности в относительной эффективности, что отражение может таким образом достичь).в результате вышесказанного, тот факт, что ваш
classиprivateозначает, что он не взял.тот факт, что метод испытаний
privateиstaticотлично-xUnit по дизайну, так как 1.0 поддерживает оба этих аспекта.обратите внимание, что расширение Visual Studio xUnit Runner,
xunit.console.exe(и графический интерфейс),xunitзадача MSBuild, Resharper и CodeRush все последовательны в чествовании это (хотя, возможно, они [особенно последние два] могли бы сделать больше, чтобы отметить, когда тестовый класс (т. е. класс [потенциально косвенно] содержащийFact-производное annoations) составляетprivate).причина TestDriven.net запускает ваш тест является то, что автор TestDriven.net приложил большие усилия, чтобы сделать его просто работать. Внутри он использует специальный тест Бегун оболочки/обертки (термин специальный бегунок), чтобы запустить тест. Имейте в виду, что метод на самом деле не выполняется через xUnit.net бегун и, следовательно, любые атрибуты, которые вы ставите на свой тест, которые имеют побочные эффекты, не будут срабатывать.
особенно NUnit (и я уверен, что MSTest) do использовать личное отражение [и, следовательно, забрать тесты в
privateклассы] что, вероятно, поэтому это никогда не казалось важной вещью для вас, чтобы беспокоиться о раньше.Примечание: побочный эффект / трюк включен этим является то, что вы можете сделать тестовый класс
privateкак быстрый способSkipping все тесты в тестовом классе [и любых вложенных классах]. (К сожалению, случаи на этой планете этого использования непреднамеренно значительно превосходят преднамеренные случаи этого!)
этот ответ для VS 2013, но шаги по существу одинаковы для VS 2012. Это относится к запуску через функциональность модульного теста ReSharper.
установите xUnit.net runner для Visual Studio 2013 (будьте осторожны при запуске Visual Studio от имени администратора, иначе тесты могут не выполняться при запуске IDE от имени Неадминистратора):
a. из Visual Studio 2013 перейдите в меню Сервис - > расширения и обновления - > Онлайн
b. Поиск xUnit.net runner для Visual Studio 2012 и 2013
Си. Потом скачать (установить) его. При обновлении до VS 2013 с VS 2012 рекомендуется удалить его, а затем повторно установить.
D. перезапустите Visual Studio.
если ReSharper установлен, установите xUnit.net плагин Test runner:
a. в Visual Studio 2013 перейдите: Resharper - > Extension Manager.
b. Слева выберите пункт онлайн.
c. Поиск "xunit.net". выберите "xUnit.net тестовая поддержка". Нажмите Кнопку Установить.
D. перезапустите Visual Studio 2013.
"чистый" раствор
а. В среде IDE, в обозревателе решений щелкните правой кнопкой мыши решение и выберете "очистить".
б. Повторной компиляции.
c. теперь при щелчке правой кнопкой мыши a
[Fact]атрибут, выберите Resharper "выполнить модульные тесты" (в отличие от значения по умолчанию "Выполнить Тесты")Устранение неполадок при работе с XUnit:
если проблемы с запуском тестов [Fact] с XUnit сохраняются, это может необходимо вручную удалить пакет xUnit из любого/всех следующие папки (просмотрите содержимое для библиотек DLL xunit, затем удалите папка xUnit, если найдено):
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\
C:\Users\<username>\AppData\Local\Microsoft\VisualStudio.0\Extensions\Что касается ReSharper, попробуйте отменить установку и переустановить библиотека xunitcontrib (xUnit.net поддержка теста). Я заметил однажды при отмене установки некоторые сообщения об ошибках мигают мимо. Я схватил снимок экрана в одной точке, и он перечислил:
- доступ к пути
C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\ReSharper\v8.1\plugins\xunit.dllлишенный.- ... и то же самое для другие библиотеки DLL в этом каталоге
чтобы решить эту проблему, удалить
C:\Users\<username>\AppData\Local\JetBrains\ReSharper\vAny\packages\xunitcontrib.1.3.0\каталог после удаления из Visual Studio, затем запустите Visual Studio как не администратор и переустановите через ReSharper (Resharper -> Extension Manager)
от http://xunit.github.io/docs/getting-started-desktop.html#run-tests-visualstudio:
Если у вас возникли проблемы с открытием или тесты, вы можете быть жертва поврежденного кэша runner внутри Visual Studio. Чтобы очистить это кэш, завершите работу всех экземпляров Visual Studio, а затем удалите папка %TEMP%\VisualStudioTestExplorerExtensions. Также убедитесь, что ваш проект связан только с одной версией Visual Studio пакет runner NuGet (xunit.бегун.visualstudio).
У меня была такая же проблема в VS2017 RC, .NET core 1.1 project. Обновление xunit.бегун работал на меня,
Install-Package xunit.runner.visualstudio
(как указано @Kyle в комментариях к другому ответу) то же самое
No tests found to runсообщение может возникнуть в результате использования NuGet для получения xUnit.dll и в конечном итоге с версией 2.0.0 (которая в настоящее время помечена как предварительная версия как некоторые основные функции, такие как обнаружение тестов v1 и т. д. еще предстоит реализовать в этой отрасли).разрешение в этом случае выберите Стабильный Только версии (в отличие от Включить Пререлиз) в пакете NuGet менеджер.
для меня комбинация моего тестового класса и имен методов тестирования была слишком длинной; xUnit, похоже, имеет некоторую шапку на этой комбинации.
сокращение имени просто метод тестирования позволил xUnit обнаружить этот единственный тест. Сокращение имени всего класс позволил xUnit обнаружить все тесты в классе.
порог имени класса + имя метода, по-видимому, составляет 172 символа.
в моем случае, чтобы увидеть какие-либо тесты, я должен был выполнить следующие шаги:
(все установлено через Диспетчер пакетов NuGet)
- установить
xUnitП2.0.50727- установить
xUnit.extensionsП2.0.50727- перейдите по следующей ссылке и выполните действия, описанные в документации: http://xunit.github.io/docs/running-tests-in-vs.html
Я использую Visual Studio 2013 Premium. (Для ReSharper не установлено)
У меня была эта проблема с .NET Core в течение некоторого времени, когда тестовый класс или тестовый метод не обнаруживается. Исправление работает для меня:
- откройте окно командной строки.
- перейдите в каталог проекта.
построить проект, выполнив следующую команду:
dotnet buildПримечание: построение из визуального Studio.NET не получится! важно!
- выполнить тесты: Тест - > выполнить - > проверить все - сочетание клавиш Ctrl+Р +А (это позволит открыть новое испытание(С) - но не запустить новый тест(ы).
- запустите тесты еще раз.
Comments