Visual Studio 2013 не обнаруживает модульные тесты

У меня есть простое решение на Visual Studio 2013, которое состоит из одного веб-проекта, одного проекта библиотеки и одного проекта unit test. Когда я открываю решение и пытаюсь запустить модульные тесты, они не обнаруживаются визуальной студией. Для запуска тестов я пытаюсь перейти в меню и выбрать Test → Run → Run all tests или открыть окно тестового проводника. Этим методам визуальная студия не обнаруживает никаких тестов в решении.

Создавая сначала простой проект модулей и пытайтесь запустить тест, визуальная студия знает об этом, и я могу запустить его. Затем, если я открою свое предыдущее решение, визуальная студия теперь обнаруживает все тесты. Я пытаюсь сохранить свое решение, но закрывая его и снова открывая, не создавая сначала проект unit test, визуальная студия не находит тесты снова. Это очень странное поведение, что я не знаю, почему это происходит.

Раньше я работал только в этом проекте, который использовал исходный элемент управления git, интегрированный с базой визуальной студии. Проблема визуальной студии не обнаруживает, что модульные тесты начинаются, когда в проект приходит новый элемент, и когда мне нужно воссоздать решение через источник управления онлайн. До этого все тесты всегда открывались визуальной студией.

Для создания модульных тестов я использую dll Microsoft.VisualStudio.QualityTools.UnitTestFramework. Моя версия визуальной студии: Microsoft Visual Studio Express 2013 для веб-версии 12.0.30723.00 Обновление 3. Моя версия .net framework - 4.5.50938.

Все мои тесты таковы:

[TestClass] 
public class Service1Test 
{ 
    [TestMethod] 
    public void Test1() 
    {
        Assert.IsTrue(True); 
    } 
}

Ответ 1

Некоторые вещи, которые я заметил, я должен время от времени делать, чтобы проверить, правильно ли отображаются тесты.

  • Если ваше решение находится на защищенном диске, в котором вам нужен доступ администратора для чтения/записи, иногда появляется только часть тестов. Определенно запускайте VS в качестве администратора в этом случае.

  • Если ваше решение 64 бит, убедитесь, что Test > Test Settings > Default Processor Architecture установлен на x64. Иногда он устанавливается на x86. Установите его на x64, затем перестройте.

  • Иногда просто перезагрузка Visual Studio делает трюк, потому что тестовый проводник снова запустится.

  • Не забудьте на самом деле построить тестовый проект/решение. (Если вы хотите, чтобы он был построен вместе с остальными проектами, щелкните правой кнопкой мыши ваше решение > Свойствa > Свойства конфигурации > Конфигурация > установите флажок "Создать" для вашего тестового проекта)

  • Убедитесь, что тесты находятся в разделе public вашего тестового класса

Ответ 2

Если вы используете NUnit, сначала загрузите NUnit Adapter.

Перейдите в Инструменты → Расширения и обновления & hellip; → Online → найдите "NUnit Test Adapter".

Ответ 3

Убедитесь, что ваш тестовый класс public, чтобы его можно было найти. И если вы ссылаетесь на другой класс, убедитесь в том же.

Кроме того, иногда, если у вас нет утверждений или вы не украшаете тест с помощью [TestMethod], тест может не распознаваться.

Еще 2 вещи: 1) Тесты с асинхронным модулем действуют в лучшем случае смешно, а в худшем - нет. Посмотрите эту статью Стивен Клири и держитесь оттуда, если это вас интересует.

2) Если вы используете NUnit и используете те же проблемы, имейте в виду [TestCase] для Nunit вместо [TestMethod]

Сказав выше, здесь article, который я опубликовал в проекте кода, с MSTest и NUnit, если вы хотите дать ему вращение и убедиться, что вы ничего не пропустили.

Ответ 4

У меня была такая же проблема, но ни один из других решений не работал. Оказывается, я использовал каркас NUnit 3 с адаптером 2.

Если вы используете NUnit 3, перейдите в раздел "Расширения и обновления" и установите тестовый адаптер NUnit3.

Ответ 5

У меня эта проблема время от времени. Что для меня работает - это закрыть Visual Studio и перейти в папку:

%LocalAppData%\Microsoft\VisualStudio\12.0\ComponentModelCache

и удалите его.

Как только вы откроете Visual Studio и снова загрузите проект. Тестировщик должен содержать ваши тесты

Ответ 6

Пользователи XUnit могут заметить, что окно Test Explorer больше не содержит никаких тестов. Чтобы снова проверить тесты, попробуйте этот важный совет, выделенный ниже.

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

Введите TEMP для поиска целевой папки

Ответ 7

Для будущих googlers у меня был редкий сценарий, который вызвал это.

В моем базовом классе тестов у меня было свойство TestContext. Это мешало MSTest зарезервированному свойству TestContext, заставляя все мои тесты быть скрытыми от VS/Resharper, кроме одного (который не наследовал от базы).

Ответ 8

для меня он менял "конфигурации решений" на Debug (вместо Release).

Ответ 9

Моя проблема была в том, что мой метод unit test не был void, и он получал параметры.

Ответ 10

Я обнаружил, что методы unit test, помеченные как async void, не обнаружены VS Explorer Explorer. Кажется, это связано с тем, что VS не сможет дождаться завершения теста и решить, удалось ли это или нет. Если вам абсолютно необходимо, чтобы тестовый метод выполнялся асинхронно, попробуйте вместо него вернуть задачу вместо async Task. Я обнаружил, что это исправило проблему для меня.

Ответ 11

Попробуйте создать все проекты как MSIL (любой процессор) вместо x86/x64. Работал для меня странно.

Ответ 12

В то время как решение AndyG работает, более продолжительным решением может быть установка переменной среды PreferredToolArchitecture на "x64", либо:

Как заставить Visual Studio использовать встроенную привязку amd64

или:

  • Панель управления | Система и безопасность | Система | Расширенные системные настройки | Переменные среды
  • PreferredToolArchitecture = x64
  • DefaultToolArchitecture = Native64Bit
  • PROCESSOR_ARCHITECTURE = x64
  • ProcessorArchitecture = x64

Ответ 13

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

Ответ 14

Перейдите в диспетчер пакетов Nuget и загрузите адаптер Nunit следующим образом. введите описание изображения здесь

Ответ 15

перейдите в меню проектa > Configuration Manager проверьте, что ваша платформа тестового проекта соответствует остальной части проекта и проверяет, чтобы построить, а затем перестроить.

Ответ 16

Просто наткнулся на это, и я не увидел похожего случая, похожего на мое.

В файле .csproj моего тестового проекта ограничение конфиденциальности NUnit было установлено на False:

<Reference Include="nunit.framework, Version=2.6.4.14350, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">
  <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
  <Private>False</Private>
</Reference>

После того, как я установил <Private> в True, он сработал.

Ответ 17

Мне удалось добавить мой как

public static void TestMethod1(){}

начал работать, как только я удалил статический файл.

Ответ 18

Вам просто нужно установить этот пакет только:

NUnit TestAdapter NUnit TestAdapter

Ответ 19

У меня была такая же проблема.

Это произошло из-за несовместимой версии NUnit, которую я добавил в мой проект (3.2.0) и тестовый адаптер, который я установил (2.0.0).

Чтобы исправить, используйте "Инструменты" > "Расширения и обновления" и найдите тестовый адаптер NUnit3, после этого он обнаружил мои тесты.

Приветствия

Ответ 20

Позвольте просто сказать для аргумента, что вам нужно использовать архитектуру X64 в тестовом проекте для правильной сборки зависимостей (как в моем случае). Возможно, вам придется изменить свою архитектуру процессоров по умолчанию в меню "Test-Test Settings". Установка этого параметра в X64 позволила моему тестовому исследователю найти мои тесты с использованием Microsoft.VisualStudio.TestTools.UnitTesting.

Ответ 21

Извините за добавление в длинный список, но у меня была совершенно другая проблема. Во-первых, я хотел бы упомянуть, что обнаружил свою проблему при нажатии "Запустить все" в Проводнике тестирования, а затем просмотрел окно вывода сборки в Visual Studio. Вы должны активно наблюдать за этим, так как после этого сообщение исчезает.

Что касается проблемы, похоже, что при проверке тестов загружается DLL и перечисляются ее типы тестов. Это приводит к загрузке ссылок, и если во время этого процесса произойдет сбой, тесты не будут отображаться в проводнике. У меня было две проблемы, препятствующие успешной загрузке тестовой DLL:

  • В конфигурационном файле все еще оставалась перенаправленная переадресация (перенаправление на версию версии NHiberate версии, чем указано в тестовом проекте).
  • Конфликтная ссылка на сборку (ссылки второго уровня не могут быть загружены). AsmSpy - отличный инструмент для поиска этих.

Ответ 22

Если вы загрузите решение Visual Studio (сообщество VS 2015 в моем случае) из каталога сетевого общего ресурса или Мои документы, входящего в общий ресурс, вы получите в эту проблему. Я решил это, переместив решение и его базовые проекты в локальную папку.

Ответ 23

Я столкнулся с той же проблемой. И исследовали и обнаружили, что dll не строились, и поместите в нужную папку. как только я изменил свою конфигурацию они появились.  - Варианты сборки проектов, какую папку следует использовать?  - конфигурацию сборки входа в меню сборки, они должны быть проверены.

который исправил это для меня.

Ответ 24

Для Visual Studio 2013.5 удалось очистить каталог \TestResults в решении. Visual Studio испортил файл mdf, в котором он хранит обнаруженные тесты, тем самым предотвращая обнаружение модульных тестов.

Ответ 25

Убедитесь, что все ваши проекты запущены с одинаковой конфигурацией. В вашем проекте Properties = > Debug = > Платформа в выпадающем списке выберите подходящую платформу (для меня это был "Любой процессор" ), как это определено в ваших других проектах.

Ответ 26

  • Я знаю, что модульные тесты не найдены, если решение не построено, поэтому попробуйте (создайте решение), но это решение похоже на справочную службу, спрашивая, подключен ли ваш компьютер...
  • После того, как чистая перестройка не устранила проблему для меня, запуск полной пакетной сборки сделал ее исправление.

Ответ 27

Была та же проблема; испытания внезапно прекратились.

Адаптер Nunit Test как-то отключился. Нажатие кнопки enable в диспетчере расширения исправило это для меня.

Ответ 29

У меня была такая же проблема, пока я не понял, что сделал ошибку cut/paste и оставил [Test Method] перед тестом.

Ответ 30

В моем случае проблема была в том, что мой class был отмечен как abstract.

Просто удалите ключевое слово abstract.