Почему Visual Studio 2015/2017 Test Runner не обнаруживает мои тесты xUnit v2

ОБНОВЛЕНИЕ: Добавление 2017 года; VS2017 использует тот же механизм обнаружения тестов / интеграции бегуна, что и 2015, поэтому ключевые вещи, которые могут пойти не так, одинаковы.


Я читал, почему бегун xUnit не находит мои тесты, что объясняет причины, по которым xUnit никогда не сможет найти ваши тесты, но моя проблема в другом - я уверен, что в моих тестах нет ничего тонкого; (они работали в других средах, похоже, это просто моя машина) - в Visual Studio 2015 Runner Test Runner в [Studio Edition] просто не отображаются мои тесты. Я не делаю ничего отдаленно захватывающего; тесты нацелены на xUnit.net v2 на рабочем столе.

Я посмотрел в окне "Вывод" и вообще ничего не вижу в разделе "Тест" на вкладке " Показать вывод".

41 ответ

  1. Устранить исключения обнаружения из ваших запросов; перейдите в окно вывода (Ctrl-Alt-O), затем переключите вывод вывода из выпадающего меню (Shift-Alt-S) на тесты и убедитесь, что исключений для обнаружения нет

  2. Как предложено в этом ответе (обоснуйте его, если техника помогает), запуск бегунка консоли на рабочем столе ( инструкции) может быть хорошей перекрестной проверкой, чтобы исключить другие возможности, например искаженные файлы конфигурации:

    packages\xunit.runner.console.2.2.0\tools\xunit.console <tests.dll>

  3. Тест | Настройки теста | Архитектура процессора по умолчанию может помочь, если ваши тесты специфичны для x86/x64 и обнаружение вызывает исключения, связанные с битрейтом, то есть не AnyCpu


Пойдите, прочитайте документацию - это всесторонне, актуально, включает информацию об устранении проблем и берет PR:-

Важное примечание: если вы ранее установили xix-nun.net Visual Studio Runner VSIX (расширение), сначала необходимо удалить его. Бегунок Visual Studio теперь распространяется только через NuGet. Чтобы удалить его, зайдите в Инструменты > Расширения и обновления. Прокрутите до конца списка и, если xUnit.net установлен, удалите его. Это заставит вас перезапустить Visual Studio.

Если у вас возникают проблемы с обнаружением или выполнением тестов, вы можете стать жертвой поврежденного кэша бегуна в Visual Studio. Чтобы очистить этот кэш, закройте все экземпляры Visual Studio и удалите папку. %TEMP%\VisualStudioTestExplorerExtensions, Также убедитесь, что ваш проект связан только с одной версией пакета NuGet для запуска Visual Studio (xunit.runner.visualstudio).

Следующие шаги работали для меня:

  1. (Только если вы подозреваете, что на вашей машине серьезный беспорядок - в общем случае более распространенным случаем является то, что интеграция с Visual Studio просто еще не установлена)

    Сделать DEL %TEMP%\VisualStudioTestExplorerExtensions как советовали:-

    PS> del $env:TEMP\VisualStudioTestExplorerExtensions

  2. Установите пакет NuGet xunit.runner.visualstudio во всех тестовых проектах

    • Paket:

      .paket\paket add nuget xunit.runner.visualstudio -i
      

      Вы должны в конечном итоге со следующим paket.dependencies:

      nuget xunit.runner.visualstudio version_in_path: true

      Обратите внимание version_in_path: true Немного важно

    • Nuget: перейдите в консоль диспетчера пакетов (Alt-T,N,O) и

      Install-Package xunit.runner.visualstudio)
      

    Перестройте, чтобы убедиться xunit.runner заканчивается в выходном каталоге

  3. Закрыть Test Explorer <- это был пропущенный бит для меня

  4. Снова откройте Test Explorer (Alt-S,W,T).

  5. Запустить все тесты (Ctrl R, A)

Ни одно из вышеперечисленных решений не помогло мне (dotnetcore 1.1, VS2017). Вот что это исправило:

  1. Добавить пакет NuGet "Microsoft.TestPlatform.TestHost"
  2. Добавить пакет NuGet "Microsoft.NET.Test.Sdk"

Это в дополнение к этим пакетам, которые я установил ранее:

  • xunit (2.3.0-beta1-build3642)
  • xunit.runner.visualstudio (2.3.0-beta1-build1309)

Мне пришлось изменить параметры теста после изменения процессора тестовых проектов на x64. Затем тесты были обнаружены снова.

Архитектура

Устанавливать xunit.runner.visualstudio пакет для тестового проекта

Убедитесь, что ваш тестовый класс общедоступен.

Выполните следующие действия:

  1. Обновите свой MsTest.TestAdapter а также MsTest.TestFrameworkdll's от nugget package manager,
  2. Очистите ваше решение
  3. Создайте свое решение.

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

Я боролся с этим весь день, работая над проектом ASP Core и xUnit 2.2.0. Решением для меня было добавление ссылки на Microsoft.DotNet.InternalAbstractions

Я обнаружил это при попытке запустить тестовый проект вручную с dotnet test который потерпел неудачу, но сообщил, что InternalAbstractions скучал. Я не видел эту ошибку в тестовом окне вывода при сбое автоматического обнаружения. Единственной информацией, которую я увидел в окне обнаружения, был код возврата, который ничего не значил для меня в то время, но в ретроспективе, вероятно, указывал на ошибку.

У меня была та же проблема с Visual Studio 2019. Просто установил следующие пакеты NuGet, и проблема была решена.

1). XUnit

2). xunit.runner.visualstudio

3). Microsoft.TestPlatform.TestHost

4). Microsoft.NET.Test.Sdk

Проведя 2 дня... ничего из вышеперечисленного не помогло мне. Единственным "решением" было: Перейти к свойствам проекта -> Build Tab. Затем нажмите кнопку "Дополнительно" в правом нижнем углу панели. Измените "Debug Info:" на "full" и нажмите "ОК".

Вот скриншоты: введите описание изображения здесь

введите описание изображения здесь введите описание изображения здесь

Причина в моем случае заключалась в том, что целевая сборка не была одинаковой между отладчиком проекта и бегуном теста. Чтобы объединить эти элементы:

  1. Тест> Настройки теста> Архитектура процессора по умолчанию. затем выберите X64 или X86.
  2. Проект>(ваш проект) Свойства> Сборка (вкладка)> Цель платформы.

После того, как они будут идентичны, перестройте свое решение, тогда для вас появятся методы тестирования.

Я использую xUnit 2.2.0.

Моя проблема заключалась в том, что мое решение не смогло найти определенные dll и app.config пытался их решить. Ошибка не отображалась в окне вывода теста в Visual Studio.

Я смог определить ошибку при установке xunit.runner.console и попытался запустить тесты через командную строку.

Как запустить тесты xunit в CLI.

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

У меня была такая же проблема с самой последней VS 2017 (версия 15.5.7) и XUnit 2.3.1. Пакет xunit.runner.visualstudio был установлен, однако тесты не отображались во встроенном обозревателе тестов VisualStudio.

Я работал над устаревшим проектом, нацеленным на.NET Framework 4.5. Однако, начиная с версии 2.2. XUnit не поддерживает платформы.NET ниже 4.5.2 (см. Примечания к выпуску - XUnit 2.2: 19 февраля 2017 г.

Изменение целевой структуры тестового проекта на версию>= 4.5.2 работало для меня. Вам не нужно менять версию проекта, которую вы тестируете, речь идет только о самом тестовом проекте.

Столкнулся с аналогичной проблемой, когда VS не обнаружил методы испытаний. В моем случае у меня было ключевое слово static с методом, который я удалил, и это сработало.

[TestMethod]

Before: public static void Test1()

After: public void Test1()
  1. Закройте все экземпляры Visual Studio
  2. Перейти к%TEMP%\VisualStudioTestExplorerExtensions\
  3. Удалить specrun связанные папки
  4. Попробуйте снова

дай мне знать спасибо

Это также может быть связано с тем, что флажок сборки не установлен для текущего проекта платформы в конфигурации сборки. Нажмите Построить | Затем настройте диспетчер конфигурации и убедитесь, что у тестовых проектов есть отметка в столбце сборки для используемой вами платформы (например, "x86").

Это было определенно решение, которое работало для меня.

Убедитесь, что вы не написали свои модульные тесты в библиотеке классов.NET Standard 2.0. На момент написания этой статьи бегунок visualstudio не поддерживает выполнение тестов в библиотеках классов netstandard2.0.

Проверьте здесь для матрицы совместимости тестового бегуна:

https://xunit.github.io/

Я надеюсь, что мой ответ будет полезен для некоторых из вас: в большинстве случаев, когда мои модульные тесты не были обнаружены, мне приходилось менять модификатор доступа к тестовому классу на общедоступный. При добавлении нового класса (Shift+Alt+C) модификатор доступа по умолчанию является внутренним, и большую часть времени я забываю его изменить.

Я долго страдал от этой проблемы.

  • У меня было около 100 проектов, разные версии были развернуты на разных серверах.

  • Обновление xunit с 2.2.0 до 2.3.1 не было решением, потому что сборка в 2.3.1 была неудачной.

Затем я просто обновил xunit.runner.visualstudio до 2.3.1, и все стало работать нормально. Я использовал эту команду в консоли диспетчера пакетов, чтобы обновить пакет xunit.runner.visualstudio

Get-Project ComapanyName.ProjectName.*.Tests | Install-Package xunit.runner.visualstudio -Version 2.3.1

Я перепробовал большинство предложений выше и ничего не получалось. В моем случае, я в команде, и тестировались другие разработчики для того же решения. Итак, я попытался просто удалить свою папку.vs, но там тоже не повезло.

Я полностью удалил свою локальную папку и заново клонировал репо. Это решило это для меня.

В моем случае в решении было 2 разных тестовых проекта. Тесты проекта 1 могут быть найдены, но тесты проекта 2 - нет. Я обнаружил, что сначала выгрузка тестового проекта 1, затем закрытие VS > очистка моих временных файлов> повторное открытие решения> перестройка позволили VS обнаружить мои тесты Project 2.

Я предполагаю, что между двумя тестовыми проектами должно быть что-то противоречащее, и это был самый быстрый способ запустить меня в работу за несколько минут. Кинки могут быть решены позже:).

Есть еще одна причина, которая может привести к тому, что Test Explorer не будет показывать никаких тестов, и это связано с новым портативным .pdb Формат файла, представленный в Visual Studio 2017 / для.NET Core, который может сломать некоторые инструменты VS. (Справочная информация: см. Отчет об ошибке "Mono.Cecil вызывает исключение OutOfMemoryException с новыми PDB.csproj".)

Ваши тесты не найдены из-за нового портативного .pdb (отладочные символы) формат?

  • Откройте окно вывода.
  • Измените раскрывающийся список " Показать вывод" на " Тесты".
  • Если вы видите вывод, подобный следующему (возможно, повторяется один раз для каждого из ваших тестов), то у вас есть проблема, описанная в этом ответе:

    Exception System.OutOfMemoryException, Exception converting <SignatureOfYourTestMethod>
    Array dimensions exceeded supported range.
    

Если да, сделайте это, чтобы решить проблему:

  • Откройте Свойства вашего тестового проекта (выберите тестовый проект в обозревателе решений и нажмите Alt+Enter).
  • Переключитесь на вкладку Build.
  • Нажмите кнопку " Дополнительно..." (расположена в самом конце этой вкладки).
  • В раскрывающемся списке " Отладочная информация" выберите none, pdb-only, или же full, но НЕ portable, Именно этот последний параметр приводит к тому, что тесты не могут быть найдены.
  • Нажмите OK и очистите и перестройте ваш проект. Если вы хотите быть более уверенным, перейдите в выходной каталог вашего тестового проекта и очистите все .pdb файлы перед перестройкой. Теперь ваши тесты должны вернуться.

Моя проблема была решена установкой nuget xunit.runner.visualstudio

Самым распространенным виновником для меня было то, что Visual Studio пыталась запустить тесты, используя архитектуру, отличную от библиотеки, которую она тестирует. К сожалению, есть несколько мест, где кажется, что это может пойти не так.

В VS 2017 попробуйте создать файл настроек запуска, например Default.runsettings в вашем тестовом проекте. Если ваша основная библиотека x64, содержимое должно быть:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <TargetPlatform>x64</TargetPlatform>
  </RunConfiguration>
</RunSettings>

Затем выберите этот файл в меню "Тест" -> "Настройки теста" -> "Выбрать файл настроек теста".

Затем в разделе "Тест" -> "Настройки теста", "Архитектура процессора по умолчанию" снова выберите правильную архитектуру.

Обязательно очистите и постройте весь раствор. Возможно, вам придется закрыть и снова открыть окно Test Explorer. Найдите дополнительные ошибки в окне "Вывод -> Тест", чтобы узнать больше о неправильных типах архитектуры.

FYI дополнительные записи настроек теста можно найти здесь.

Это случилось со мной, когда я впервые попробовал пройтись с IntelliTest в VS 2017.

Иногда, когда тестовый проект автоматически создается IntelliTest, ссылка на сборку Microsoft.ExtendedReflection (... \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ Extensions \ Microsoft \ Pex \ Microsoft.ExtendedReflection.dll отсутствует. После добавления сгенерированные тесты появятся в тестовом проводнике после перекомпиляции.

Отказ от ответственности: речь идет не о xunit с Visual Studio 2015, а о Visual Studio 2017 с приложением модульного тестирования UWP (MSTest). Я попал в эту ветку в поисках того же самого, так что, возможно, кто-то еще сделает то же самое:)

Решением для меня было обновить пакеты nuget для MSTest.TestAdapter и MSTest.TestFramework. Кажется, что при создании приложения модульного тестирования для UWP вы не получаете автоматически последние версии.

Вот решение, которое сработало для нас. Не самый лучший, но, может быть, кто-то может извлечь выгоду.

Фон:

  • Наши скрипты были разработаны с VS 2013 и использовали NUnit VS Adapter 2.1..
  • Недавно мы перешли на VS 2017, и когда откроем то же решение - test не будет отображаться в Test Explorer.

После сборки мы увидим это сообщение:

[Informational] NUnit Adapter 3.10.0.21: Test discovery starting
[Informational] Assembly contains no NUnit 3.0 tests: C:\ihealautomatedTests\SeleniumTest\bin\x86\Debug\SeleniumTest.dll
[Informational] NUnit Adapter 3.10.0.21: Test discovery complete

Решение (временное):

  • Удалить NUnit Adapter 3.10...
  • Установите адаптер NUnit VS 2.1..

Теперь тесты показаны.

Еще нужно выяснить, как заставить наши скрипты работать с более новой версией адаптера... Любая идея - пожалуйста, дайте мне знать.

Если это другая тема - пожалуйста, дайте мне знать и удалите мои комментарии.

В моем случае у меня есть несколько тестовых проектов в одном решении, и только один из проектов не отображал "Тестовый проводник"

Я перешел в "Управление пакетом Nuget для решения", щелкнув правой кнопкой мыши решение.

Я заметил, что на вкладке "Консолидировать" было несколько "тестовых" пакетов с нюгетами, которые не синхронизировались между проектами. Я нажал "Установить", и мои недостающие тесты обнаружились.

Откройте «Выходы» -> «Тесты» и посмотрите, в чем ошибка. В моем случае у меня было такое сообщение об ошибке:

      The framework 'Microsoft.AspNetCore.App', version '5.0.0' (x64) was not found.

После установки .Net SDK 5.0 тесты сразу сработали: https://dotnet.microsoft.com/download/dotnet/thank-you/sdk-5.0.402-windows-x64-installer

Вам нужно обновить все пакеты, когда вы переходите с VS2015 на VS2017, чтобы обнаружить тест в проводнике тестов.

Другие вопросы по тегам