it-swarm.com.ru

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

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


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

Я посмотрел в окне «Вывод» и вообще ничего не вижу в Test на вкладке «Show» из вкладок.

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

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

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

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


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

Важное примечание: если вы ранее установили xix-nun.net Visual Runner VSIX (расширение), сначала необходимо удалить его. Бегунок Visual Studio теперь распространяется только через NuGet. Чтобы удалить его, перейдите Tools> Extensions and Updates. Прокрутите до конца списка и, если 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)

174
Ruben Bartelink

Ни одно из вышеперечисленных решений не помогло мне (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-бета1-build1309)
25
Arman

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

 Architecture

22
Max

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

16
Chris Aelbrecht

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

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

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

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

10
Tom Makin

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

7
Liam

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

Вот скриншоты:  enter image description here

 enter image description here  enter image description here

5
curiousBoy

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

У меня была такая же проблема с самой последней 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 работало для меня. Вам не нужно менять версию проекта, которую вы тестируете, речь идет только о самом тестовом проекте.

5
baumgarb

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

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

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

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

5
SohamC

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

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

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

5
Jawad Sabir

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

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

3
cd747

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

Проверьте здесь для матрицы совместимости Test Runner:

https://xunit.github.io/#runners

3
vullnetyy

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

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

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

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

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

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

[TestMethod]

Before: public static void Test1()

After: public void Test1()
2
live-love

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

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

2
Zach J.

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

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

1
Paul G

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

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

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

1
CBBSpike

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

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

1
Alex Albu

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

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

1
Christian

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

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

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

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

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

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

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

1
Toby J

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

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

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

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

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

  • Откройте свойства вашего тестового проекта (выберите тестовый проект в Solution Explorer и нажмите Alt+Enter).
  • Перейдите на вкладку Build .
  • Нажмите кнопку Дополнительно ... (расположена в самом конце этой вкладки).
  • В раскрывающемся списке с пометкой Отладочная информация выберите none, pdb-only или full, но НЕportable. Именно этот последний параметр приводит к тому, что тесты не могут быть найдены.
  • Нажмите OK и очистите и восстановите свой проект. Если вы хотите быть более уверенным, перейдите в выходной каталог вашего тестового проекта и очистите все файлы .pdb перед сборкой. Теперь ваши тесты должны вернуться.
1
stakx
  1. Закройте все экземпляры Visual Studio
  2. Перейти к% TEMP%\VisualStudioTestExplorerExtensions \
  3. Удалить specrun связанные папки
  4. Попробуйте снова

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

0
alvarodoune

Я не знаю, используют ли некоторые из вас JustMock, но мне пришлось отключить профилировщик в VS 2017, чтобы тестовое определение работало.

0
chrisdrobison

Я очистил Temp,% Temp% и Prefetch. Затем попытался открыть VS и смог найти методы испытаний.

0
Venkat Ramanan

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

0
Sachin

У меня есть тестовые проекты A и B. Тесты в Проекте A были обнаружены, но Discovery никогда не останавливался для B. Мне пришлось вручную убить TestHost, чтобы сделать остановку.

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

Теперь это сработало, и я открыл окно Solution, а не Test Explorer. Вместо этого я просто проверил окно «Вывод» на наличие тестов и увидел, что процесс обнаружения завершен, а количество тестов равно A + B. После этого я открыл Test Explorer, а затем и A, и B, где они присутствуют ..

Удалите и установите последнюю версию xUnit правильно. Удалите% temp%, как упомянуто выше, добавьте пакет NuGet «Microsoft.TestPlatform.TestHost» Добавьте пакет NuGet «Microsoft.NET.Test.Sdk», перезапустите, но проверьте только выходные данные тестов. Если это работает, вы увидите

0
Tomas Hesse

В моем случае я создал новую «конфигурацию решения», как показано на рисунке. Поэтому, когда я выбираю свой собственный как «Prod», он по какой-то причине не распознает TestMehods. Переключение обратно на «Отладка» решает проблему 

 enter image description here

0
batmaci

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

0
kDar

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

Фон:

  • Наши скрипты были разработаны с 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 ..

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

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

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

0
Andrew Homsky

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

1). XUnit

2). xunit.runner.visualstudio

3). Microsoft.TestPlatform.TestHost

4). Microsoft.NET.Test.Sdk

0
Chamila Maddumage

Также проверьте, есть ли в тестовом проекте полностью пустой файл app.config (полностью пустой, без разметки). Это был виновник в моем случае.

0
Gopal

В моем решении было много проектов разного типа, и я не смог запустить тестовый проект Xunit. Я выгрузил их все, кроме своего проекта Xunit, а затем пересобрал решение, тесты появились в visual studio, и я смог их запустить.

0
Youcef Kelanemer