У меня есть некоторые тесты, которые используют встроенные Microsoft.VisualStudio.TestTools.UnitTesting
, но не могут заставить их работать.
Я использую Visual Studio 2012 Ultimate.
У меня есть решение двух проектов; Надо испытание, using Microsoft.VisualStudio.TestTools.UnitTesting
, [TestClass]
перед классом, [TestMethod]
прежде чем методы испытаний и ссылки Microsoft.VisualStudio.QualityTools.UnitTestFramework
(версия 10.0.0.0, во время выполнения версии V2.0.50727). Я пробовал dot-net framework 3.5, 4 и 4.5, другие дают ошибку перенаправления.
Я попытался построить решение и проект. Тестовый проводник имеет сообщение «Создайте свое решение, чтобы обнаружить все доступные тесты. Нажмите «Выполнить все», чтобы создать, обнаружить и запустить все тесты в вашем решении.
Итак, вопрос в том, как заставить визуальную студию найти тесты?
Также пытался следовать этому: http://msdn.microsoft.com/en-US/library/ms379625%28v=VS.80%29.aspx, но безуспешно: я застреваю в разделе начало работы, когда меня просят щелкните правой кнопкой мыши и выберите create tests
. Здесь нетcreate tests
.
У меня есть этот тест (он компилируется, но не отображается в тестовом проводнике):
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace tests {
[TestClass]
public class SimpleTest {
[TestMethod]
public void Test() {
Assert.AreEqual("a","a", "same");
}
}
}
Теперь я обнаружил (см. Удаленный ответ ниже), что это потому, что он находится на общем диске, но я пока не знаю, как его обойти. (возможно, что-то о настройках безопасности).
источник
Ответы:
У меня были такие же симптомы, но при других обстоятельствах.
Мне пришлось добавить еще один шаг к решению Питера Ламберга - очистить ваше решение / проект.
Мой unittest проект нацелен на x64. Когда я создавал проект, он изначально был нацелен на x86.
После перехода на x64 все мои юнит-тесты исчезли.
Мне пришлось перейти в меню «Тест» -> «Настройка теста» - «Архитектура процессора по умолчанию» -> x64.
Они все еще не появились.
Сделал сборку.
Все еще не появился.
Наконец-то сделал чистку
Затем они появились.
Я считаю, что Clean Solution и Clean весьма полезны для получения решений для игры в мяч, когда настройки изменились. Иногда мне приходится идти на крайности и удалять
obj
иbin
каталоги и пересобрать.источник
Пожалуйста, добавьте ключевое слово public в определение вашего класса. Ваш тестовый класс в настоящее время не виден за пределами своей сборки.
источник
[TestMethod]
статичностью из-за копирования-вставки другого кода.[TestMethod]
где статичен, потому что это то, что былоUserTest1.cs
в новом тестовом проекте! И решил мою проблему.static
перед вашим методом. Я не знаю, почему я делаю это по привычке так часто.Это иногда работает.
Убедитесь, что архитектура процессора в меню «Тест» совпадает с той, которую вы используете для построения решения.
Тест -> Настройки теста -> Архитектура процессора по умолчанию -> x86 / x64
Как упоминалось в других статьях, убедитесь, что у вас открыто окно Test Explorer. Тест -> Windows -> Тестовый проводник
Затем повторная сборка проекта с тестами должна отобразить тесты в Test Explorer.
Редактировать: Как указал Урджами ниже, чистая сборка также может помочь. В дополнение к этому, вот еще одна вещь, с которой я столкнулся:
Флажок «Сборка» был снят в Configuration Manager для нового тестового проекта, который я создал в рамках решения.
Зайдите в Build -> Configuration Manager. Убедитесь, что в вашем тестовом проекте установлен флажок сборки для всех конфигураций решения и платформ решения.
источник
У меня Visual Studio 2012, и я не мог видеть тесты в Test Explorer,
Поэтому я установил следующее: Тестовый адаптер NUnit
Это решило проблему для меня!
источник
Install-Package NUnitTestAdapter
По моему недавнему опыту все вышеперечисленное не сработало. Мой метод испытаний
не показывался, но компилировался нормально. Когда я удалил
async
ключевое слово test, оно появилось в Test Explorer. Это потому,async void
что это метод «забей и забудь». Сделайте метод,async Task
и вы получите свой тест обратно!Кроме того, отсутствие конфигурации проекта Test на «Build» также препятствует отображению тестов. Configuration Manager> Проверьте свой тест для сборки.
источник
Поскольку проект находится на общем диске, как указывалось в оригинальном постере. VS.NET должен доверять расположению в сети, прежде чем загружать и запускать ваши тестовые сборки. Прочитайте это сообщение в блоге .
Чтобы позволить VS.NET загружать вещи из общего сетевого ресурса, необходимо добавить их (общие ресурсы) в надежные расположения. Чтобы добавить местоположение в полный список доверия (очевидно, измените его в соответствии с требованиями вашей среды):
Чтобы проверить или перечислить существующие надежные расположения, выполните:
источник
CasPol.exe
можно найти под%windir%\Microsoft.NET\Framework[64]\[version]
. Убедитесь, что вы устанавливаете политику для правильной архитектуры. Источник: msdn.microsoft.com/en-us/library/cb6t8dtz%28v=vs.100%29.aspxПроблема, которую я обнаружил, заключается в том, что тесты не обнаруживаются в Test Explorer (ничего не отображается), если решение работает с сетевого диска / сетевого расположения / общего диска
Вы можете исправить это, добавив переменную окружения.
COMPLUS_LoadFromRemoteSources и установить его значение в 1
источник
У меня была такая же проблема .. В моем случае это было вызвано частной собственностью
TestContext
.Помогло его изменение на следующее:
После очистки и построения решения (как описано в ответе @Ourjamie) методы тестирования в затронутом классе тестирования стали доступны в Test Explorer.
источник
Я столкнулся с той же проблемой, пытаясь открыть решение для общего сетевого ресурса. В этом случае Test Explorer не обнаружит модульный тест. Решение оказывается:
Панель управления -> Свойства обозревателя -> Вкладка «Безопасность» -> Нажмите «Интранет» и добавьте IP-адрес сервера или имя хоста, на котором находится сетевой ресурс, в список «Сайты».
После этого я перекомпилировал решение и теперь появились тесты. Это должно быть очень похоже на ответ, сделанный @BigT.
источник
Список быстрых проверок для решения некоторых распространенных проблем тестирования. Удостоверься что:
public
[TestClass]
атрибут[TestMethod]
атрибутЕсли это не помогает, попробуйте очистить, пересобрать решение и перезапустить Visual Studio.
источник
UTA001: TestClass attribute defined on non-public class
Я получаю ошибку:
"Failed to initialize client proxy: could not connect to vstest.discoveryengine.exe."
Попробуйте запустить Visual Studio от имени администратора. Это сработало для меня.
Существует еще одно сообщение о переполнении стека, в котором обсуждается эта ошибка , и то же решение работает для них. Остается вопрос, почему это работает.
источник
У меня иногда появляются одни и те же симптомы.
Что я сделал:
1. Закрыл окно Test Explorer.
2. Очистил решение.
3. Перестроил решение.
4. Перезапустил окно Test Explorer из меню Test -> Windows -> Test Explorer.
И я получил свой тест в окне Test Explorer.
источник
Из строки меню сверху ...
Тест -> Выполнить -> Все тесты
Вы также можете просмотреть все тесты из Test Explorer (Test -> Windows -> Test Explorer)
Далее с VS 2012, если вы что-то упустили, попробуйте поискать его с помощью панели быстрого запуска в правом верхнем углу (Ctrl + Q) «Тест»
Надеюсь это поможет.
источник
Microsoft.VisualStudio.TestTools.UnitTesting
, есть идеи, что еще я делаю не так?Я обнаружил, что лучший способ устранить эту проблему - создать файл .proj msbuild и добавить в него свои проекты модульных тестов, в которых возникла проблема, и выполнить тесты с использованием версии mstest для командной строки. Я обнаружил небольшую проблему с конфигурацией в моем app.config, которая появилась только при запуске тестов из mstest - в противном случае тестовый проект создавался просто отлично. Также вы найдете любые косвенные проблемы с этим методом. После того, как вы сможете запустить модульный тест из командной строки с помощью mstest, вы сможете сделать чистое решение, пересобрать решение, и ваш тест должен быть обнаружен правильно.
источник
В моем случае это было что-то еще. Я установил пакет, а затем удалил его и переустановил более раннюю версию. Это оставило остаточное
configuration/runtime/asssemblyBinding/dependencyIdentity
перенаправление в моем app.config. Я должен был исправить это. Я понял это, посмотрев вOutput
окно и выбрав "Tests
" в раскрывающемся списке. Сообщение об ошибке было там. Это была боль ... Надеюсь, это поможет кому-то еще.источник
Это больше для того, чтобы помочь людям, которые оказались здесь, а не ответить на вопрос ОП:
Попробуй закрыть и снова открыть визуальную студию, у меня получилось.
Надеюсь, это кому-нибудь поможет.
источник
Я знаю, что это старый вопрос, но в Visual Studio 2015 у меня возникли проблемы, из-за которых мой недавно созданный тестовый класс не распознавался. Перепробовал все. Проблема заключалась в том, что класс не был «включен в проект». Я нашел это только после перезапуска Visual Studio и заметил, что моего тестового класса там не было. После показа скрытых файлов я увидел, что и другие классы, которые я написал, не были включены. надеюсь, это поможет
источник
Я сталкивался с этой проблемой много раз, когда пытался создать решение на другом ПК.
Я использую NUnit и Specflow, а также. По умолчанию Мой тестовый проект нацелен на X86, но я должен изменить это на X64. Шаги: 1. Тестовое меню -> Настройка теста - Архитектура процессора по умолчанию -> x64. 2. Чистая сборка 3. Сборка 4. Если тесты еще не появились. 5. Перейдите в Инструменты Расширения и обновления, затем установите библиотеки NUnit и Specflow 6. Чистая сборка 7. Сборка
Затем обычно тест отображается в редакторе тестов.
источник
Я обновил VS 2012 до последнего обновления. то есть визуальное обновление студии 3. Это решило проблему для меня.
источник
Для меня решение было чуть менее сложным.
Я только что перенес на свою машину существующее решение (клонировано из gitHub), и мы не отслеживаем автоматически сгенерированные файлы .cs, созданные Visual Studio. (Для каждого файла объектов есть файл .cs с тем же именем)
Открытие решения без наличия связанных с ним файлов .cs фактически позволяет мне переходить к связанным методам, поэтому все выглядело так, как будто specflow был подключен правильно, но я не смог просмотреть названия тестов в Test Explorer.
Для этой проблемы простое исключение файлов объектов из проекта и последующее их повторное включение заставило VS сгенерировать эти автоматически созданные файлы кода.
После этого я смог просмотреть тесты в тестовом проводнике.
источник
У меня была эта проблема при обновлении моего решения с Microsoft Visual Studio 2012 Express для Web до Microsoft Visual Studio 2013.
Я создал проект модульных тестов в 2012 году, и после открытия в 2013 году проект модульных тестов не отображал никаких тестов в проводнике тестов. Каждый раз, когда я пытался запустить или отладить тесты, это не удавалось, говоря следующее в окне вывода:
Я также заметил, что при отладке тестов он запускал экземпляр Visual Studio 2012. Это подсказало мне тот факт, что проект модульных тестов все еще ссылался на 2012 год. Глядя на ссылку на тестовый проект, я понял, что он был нацелен на неправильный Microsoft Visual DLL-библиотека Framework Studio Test для этой версии Visual Studio:
Я изменил номер версии с 11.0 на 12.0:
Я перестроил все, и это устранило проблему - все тесты были найдены в Test Explorer, и теперь все тесты найдены и работают отлично.
источник
Убедитесь, что для вашего тестового проекта не задана задержка подписи только в свойствах вашего проекта -> Подписание. Если это так, отмените выбор и выполните чистую перестройку.
источник
sn -Vr *,<public key token>
правами администратора в командной строке разработчика VSЯ столкнулся с той же проблемой, пытаясь открыть решение для общего сетевого ресурса в VS2013 Ultimate.
Я исправил проблему включив
Панель управления -> Свойства обозревателя -> Вкладка «Безопасность» -> Нажмите «Локальная интрасеть», нажмите на сайты и убедитесь, что установлен флажок «Автоматически определять сеть интрасети».
источник
Все это отличные ответы, но есть еще одна причина, о которой я знаю; Я просто столкнулся с этим. В одном из моих тестов у меня было сообщение ReSharper, указывающее, что у меня был неиспользуемый закрытый класс. Это был класс, который я собираюсь использовать в предстоящем тесте. Это фактически заставило все мои тесты исчезнуть.
источник
Проверьте связанные сборки на наличие любых сборок, для которых «Локальное копирование» может иметь значение «Ложь».
Если ваш тестовый проект собирается в свою собственную папку (например, bin / Debug), и проект зависит от другой сборки, и одна из этих сборок в списке «Ссылки» помечена как «Копировать локально =« Ложь », сборка не может быть загружена из-за отсутствующих зависимостей и ваши тесты не будут загружаться после сборки.
источник
Похоже, что NUnit Framework 2.6.4 плохо работает с тестовым адаптером NUnit. На сайте упоминается, что тестовый адаптер будет работать только с NUnit Framework 2.6.3.
Это была моя проблема: 1. Я скачал NUnit и NUnit Test Adapter отдельно через Nuget в VS2012. Каким-то образом NUnit обновился до версии 2.6.4. Внезапно я не увидел список тестов.
Fix:
Удалить Nuget и адаптер Nuget Test
а. Перейдите в Инструменты> Nuget> Диспетчер Nuget Pkg> Управление Nuget Pkg для решения
б. Список установленных пакетов
с. Нажмите Управление
д. Не проверяйте свои проекты
Установите тестовый адаптер NUnit, включая NUnit 2.6.3 Framework
Очистить / восстановить решение
Откройте Test> Test Explorer> Run All
Я вижу все тесты
Надеюсь это поможет
источник
Ни одно из решений здесь не помогло мне. Тесты не были бы обнаружены для одного решения, тогда как другое решение, ссылающееся на те же проекты, работало нормально. Я наконец решил это, удалив файл solutionname.v12.suo.
источник
У меня была та же проблема, но немного другая.
Я использовал Visual Studio 2012. По какой-то причине выполнялись только тесты исходного сгенерированного файла. Но тесты в другом файле не были запущены. Пробовал разные решения, выложенные здесь, не сработало.
Наконец, я понял, что у меня есть закрытый метод в тестовом классе, который был первым методом внутри класса. Я только что переместил приватный метод после тестового метода; так что теперь метод с
[TestMethod]
атрибутом является первым методом внутри класса. Странно, но сейчас это работает.Надеюсь, это поможет кому-нибудь когда-нибудь.
источник
Тесты не любят асинхронные методы. Например:
После этого:
Это видел тест.
источник
[Test] public void XamarinExampleTest() { // This workaround is necessary on Xamarin, // which doesn't support async unit test methods. Task.Run(async () => { // Actual test code here. }).GetAwaiter().GetResult(); }
Добавление моего ответа, так как это лучший результат в Google для этого.
Я использую Visual Studio 2015 и (по незнанию - я только что побежал
Install-Package NUnit
) установил NUnit3 пакет NuGet в свой тестовый проект. У меня уже было установлено расширение NUnit Test Adapter, и мои тесты все еще не появлялись.Установка тестового адаптера NUnit3 через Инструменты> Расширения и обновления исправила это для меня.
источник