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 в диспетчере расширения исправило это для меня.
Ответ 28
Чтобы получить тесты для показа в окне Test Explorer, мне пришлось установить NUnit3 Test Adapter 3.0, который не был доступен в диспетчере пакетов.
Скачан из https://visualstudiogallery.msdn.microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d
Ответ 29
У меня была такая же проблема, пока я не понял, что сделал ошибку cut/paste и оставил [Test Method]
перед тестом.
Ответ 30
В моем случае проблема была в том, что мой class
был отмечен как abstract
.
Просто удалите ключевое слово abstract
.