Почему визуальная студия 2012 не находит мои тесты?

У меня есть несколько тестов, которые используют встроенный Microsoft.VisualStudio.TestTools.UnitTesting, но не могут заставить их работать.

Я использую visual studio 2012 final.

У меня есть решение двух проектов; Перед тестом, [TestMethod] перед тестами и ссылкой Microsoft.VisualStudio.QualityTools.UnitTestFramework (версия 10.0.0.0, версия выполнения v2.0.50727) перед тестами, using Microsoft.VisualStudio.TestTools.UnitTesting, [TestClass]. Я пробовал 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");
        }
    }
}

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

Ответ 1

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

Я читал, что он может быть настроен для работы с общим диском, но так и не смог его сделать, поскольку к моменту, когда я обнаружил решение, которое я переключил на MonoDevelop на Debian,

Ответ 2

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

Мне пришлось добавить еще один шаг к решению Питера Ламберга - Очистить решение/проект.

Мой проект unittest нацелен на x64. Когда я создал проект, он был первоначально нацелен на x86.

После переключения на x64 все мои модульные тесты исчезли.

Мне нужно было перейти в тестовое меню → Настройка теста - Архитектура процессора ошибок → x64.

Они все еще не появлялись.

Сделал сборку.

По-прежнему не отображается.

Наконец сделал Clean

Затем они появились.

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

Ответ 3

Добавьте в определение класса ключевое слово public. Ваш тестовый класс в настоящее время не виден вне его собственной сборки.

namespace tests {
    [TestClass]
    public class SimpleTest {
        [TestMethod]
        public void Test() {
            Assert.AreEqual("a","a", "same");
        }
    }
}

Ответ 4

Это иногда работает.

Проверьте, соответствует ли архитектура процессора в меню Test тот, который вы используете для построения решения.

Тестирование → Настройки тестирования → Архитектура процессора по умолчанию → x86/x64

Как упоминалось в других сообщениях, убедитесь, что окно Test Explorer открыто. Test → Windows → Test Explorer

Затем перестройка проекта с помощью тестов должна сделать тесты в Test Explorer.

Изменить: Как указал Наджами, ниже, сделать чистую сборку также может помочь. В дополнение к этому, вот еще одна вещь, с которой я столкнулся:

Флажок "Build" был отключен в Configuration Manager для нового тестового проекта, который я создал в рамках решения.

Перейдите в сборку → Configuration Manager. Убедитесь, что установлен тестовый проект. для всех конфигураций решений и платформ решений.

Ответ 5

У меня есть Visual Studio 2012, и я не мог видеть тесты в Test Explorer,

Итак, я установил следующее: NUnit Test Adapter

Это исправило проблему для меня!

Ответ 6

В моем недавнем опыте все вышесказанное не сработало. Мой метод тестирования

public async void ListCaseReplace() { ... }

не показывался, но компилировал штраф. Когда я удалил ключевое слово async, тест, показанный в Test Explorer. Это bacause async void - это метод "огонь и забыть". Сделайте метод async Task, и вы вернете свой тест!

Кроме того, отсутствие конфигурации тестового проекта, установленного в "Build", также не позволяет показывать тесты. Configuration Manager > Проверьте свой тест на сборку.

Ответ 7

Так как проект находится на общем диске, как указал оригинальный плакат. VS.NET должен доверять сетевому местоположению, прежде чем он будет загружать и запускать тестовые сборки. Прочитайте этот пост в блоге.

Чтобы позволить VS.NET загружать вещи из общего сетевого ресурса, необходимо добавить их (долей) в надежные местоположения. Чтобы добавить место в полный список доверенных списков (явно измените, как требуется для вашей среды):

 caspol -m -ag 1.2 -url file:///H:/* FullTrust

Чтобы проверить или просмотреть существующие доверенные местоположения, выполните:

 caspol -lg

Ответ 8

Проблема, которую я обнаружил, заключается в том, что тесты не обнаруживаются в Test Explorer (ничего не отображается), если решение работает от сетевого диска/сетевого местоположения/общего диска

Вы можете исправить это, добавив переменную среды.

COMPLUS_LoadFromRemoteSources и установите его значение 1

Ответ 9

Я получал ошибку: "Failed to initialize client proxy: could not connect to vstest.discoveryengine.exe."

Попробуйте запустить Visual Studio в качестве администратора. Это сработало для меня.

Существует еще одна проблема с переполнением стека, обсуждающая эту ошибку, и для них одинаковое решение. Остается вопрос, почему это работает.

Ответ 10

У меня была та же проблема. В моем случае это было вызвано частным свойством TestContext.

Изменение этого параметра на следующее:

public TestContext TestContext
{
    get;
    set;
}

После очистки и создания решения (как описано в ответе @Ourjamie) методы тестирования в затронутом тестовом классе были доступны в Проводнике тестеров.

Ответ 11

Я столкнулся с тем же вопросом, пытаясь открыть решение на сетевом ресурсе. В этом случае Test Explorer не обнаружит unit test. Решение получится:

Панель управления → Свойства обозревателя → вкладка "Безопасность" → Нажмите "Интранет" и добавьте IP-адрес сервера или имя хоста, содержащего сетевой ресурс, в список "Сайты".

После этого я перекомпилировал решение, и теперь появились тесты. Это должно быть очень похоже на ответ, сделанный @BigT.

Ответ 12

Быстрый контрольный список для решения некоторых распространенных тестовых проблем. Убедитесь, что:

  • Класс тестирования и методы тестирования public
  • Класс тестирования имеет атрибут [TestClass]
  • Методы тестирования имеют атрибут [TestMethod]

Если это не помогает, попробуйте очистить, перестроить решение и перезапустить Visual Studio.

Ответ 13

Я иногда получаю те же симптомы.

Что я сделал:
1. Закрыл окно тестового проводника
2. Очистили раствор
3. Восстановить решение
4. Откроется окно Test Explorer из Test → Windows → Test Explorer.

И я получил свой тест в окне Test Explorer.

Ответ 14

В строке меню сверху...

Тест → Выполнить → Все тесты

Вы также можете просмотреть все тесты из Test Explorer (Test → Windows → Test Explorer)

Далее с VS 2012, если вы пропустите что-нибудь, попробуйте найти его, используя панель быстрого запуска в верхнем правом углу (Ctrl + Q) "Test"

Надеюсь, что это поможет.

Ответ 15

Я нашел, что лучший способ устранить эту проблему - создать файл .proj msbuild и добавить ваши проекты unit test, которые у вас возникли проблемы с этим файлом, и выполнить тесты, используя версию командной строки mstest. Я обнаружил небольшую проблему с конфигурацией в моем app.config, которая появилась только при запуске тестов из mstest - в противном случае тестовый проект был построен просто отлично. Также вы найдете любые косвенные проблемы с этим методом. После запуска unit test из командной строки с помощью mstest вы можете выполнить чистое решение, восстановить решение, и ваш тест должен быть обнаружен должным образом.

Ответ 16

В моем случае это было нечто другое. Я установил пакет, а затем удалю его и переустановил более раннюю версию. Это оставило остаточное перенаправление configuration/runtime/asssemblyBinding/dependencyIdentity в моем app.config. Я должен был исправить это. Я понял это, посмотрев окно Output и выбрав "Tests" в раскрывающемся списке. Появилось сообщение об ошибке. Это была боль... Я надеюсь, что это поможет кому-то другому.

Ответ 17

Это больше, чтобы помочь людям, которые оказались здесь, а не отвечать на вопрос OP:

Попробуйте закрыть и снова открыть визуальную студию, помогло.

Надеюсь, это поможет кому-то.

Ответ 18

Я знаю, что это старый вопрос, но с Visual Studio 2015 у меня возникли проблемы, когда мой новый класс тестирования не был распознан. Пробовал все. В результате проблема заключалась в том, что класс не был "включен в проект". Я только нашел это при перезапуске Visual Studio и заметил, что моего тестового класса там не было. Показывая скрытые файлы, я видел это, как и другие классы, которые я написал, не были включены. Надеюсь, что поможет

Ответ 19

Я неоднократно испытывал эту проблему, когда пытаюсь создать решение на другом ПК.

Я также использую NUnit и Specflow. По умолчанию Мой тестовый проект нацелен на X86. Но я должен изменить это на X64. Шаги 1. Меню "Тест" → "Тестирование" - "Архитектура процессора защиты" → x64. 2. Очистить сборку 3. Построить 4. Если все еще тесты не отображаются. 5. Перейдите в Инструменты  Расширения и обновления, затем установите библиотеки NUnit и Specflow 6. Очистить сборку 7. Сборка

Тогда обычно тест будет показан в тестовом редакторе.

Ответ 20

Я обновил VS 2012 до последнего обновления. т.е. визуальное обновление студии 3. Это исправило проблему для меня.

Ответ 21

Для меня решение было немного менее сложным.

Я только что привел существующее решение на свою машину (клонировано из gitHub), и мы не отслеживаем автоматически сгенерированные файлы .cs, созданные Visual Studio. (Для каждого файла функции есть файл .cs с тем же именем)

Открытие решения без наличия связанных файлов .cs фактически позволяет мне перейти к связанным методам, поэтому он выглядел так, как если бы поток был правильно подключен, но я не смог просмотреть имена тестов в Test Explorer.

Для этой задачи, просто исключая файлы функций из проекта и затем повторно включив их, принудительно VS будет регенерировать эти автоматически сгенерированные файлы кода.

После этого я смог просмотреть тесты в тестовом проводнике.

Ответ 22

У меня возникла эта проблема при обновлении моего решения из Microsoft Visual Studio 2012 Express для Web в Microsoft Visual Studio 2013.

В 2012 году я создал проект Unit Tests, и после открытия в 2013 году проект Unit Test не показал бы никаких тестов в тестировщике тестов. Каждый раз, когда я пытался запускать или отлаживать тесты, это не удавалось, говоря следующее в окне вывода:

    Failed to initialize client proxy: 
    could not connect to vstest.discoveryengine.x86.exe

Я также заметил, что при отладке тестов он запускал экземпляр Visual Studio 2012. Это указывало на то, что проект Unit Tests по-прежнему ссылался на 2012 год. Рассматривая ссылку на тестовый проект, я понял, что он нацелился на неправильная Microsoft Visual Studio Unit Test Библиотека DLL для этой версии Visual Studio:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

Я изменил номер версии с 11.0 до 12.0:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

Я перестроил все, и это исправило проблему - все тесты были найдены в Test Explorer, и теперь все тесты найдены и работают отлично.

Ответ 23

Убедитесь, что ваш тестовый проект не установлен на Значок задержки только в ваших свойствах проекта → Подписание. Если это так, отмените выбор и выполните чистую перестройку.

Ответ 24

Я столкнулся с той же проблемой, пытаясь открыть решение на сетевом ресурсе в VS2013 Ultimate.

Я исправил проблему, включив

Панель управления → Свойства обозревателя → вкладка "Безопасность" → Нажмите "Локальная интрасеть", нажмите на сайты и убедитесь, что "Автоматическое обнаружение сети интрасети" отмечено.

Ответ 25

Все это большие ответы, но есть еще одна причина, о которой я знаю; Я просто столкнулся с этим. В одном из моих тестов у меня появилось сообщение ReSharper, указывающее, что у меня был неиспользуемый частный класс. Это был класс, который я собираюсь использовать в предстоящем тесте. Это фактически вызвало исчезновение всех моих тестов.

Ответ 26

Проверьте ссылочные сборки для любых сборок, которые могут иметь "Копировать локальную" в "False".

Если ваш тестовый проект создает для него собственную папку (например, bin/Debug), а проект зависит от другой сборки, а одна из этих сборок в списке ссылок отмечена Copy Local = "False", сборка не может загрузить из-за отсутствующие зависимости, и ваши тесты не будут загружаться после сборки.

Ответ 27

Ни одно из решений здесь не помогло мне. Тесты не будут обнаружены для одного решения, тогда как другое решение, ссылающееся на одни и те же проекты, отлично работало. Я, наконец, решил это, удалив файл solutionname.v12.suo.

Ответ 28

Похоже, что NUnit Framework 2.6.4 не работает с адаптером NUnit Test Adapter. На веб-сайте упоминается, что тестовый адаптер будет работать только с NUnit Framework 2.6.3.

Это была моя проблема:     1. Я загрузил NUnit и NUnit Test Adapter отдельно через Nuget в VS2012. Как-то NUnit получил обновление до 2.6.4. Вдруг я не видел, что перечислены мои тестовые примеры.

Fix:

  • Удалить адаптер Nuget и Nuget Test

    а. Перейдите в Инструменты > Nuget > Nuget Pkg manager > Управление Nuget Pkg для решения

    б. Список установленных пакетов

    с. Нажмите "Управление"

    д. Отмените проверку проектов

  • Установите адаптер NUnit для тестирования, включая NUnit 2.6.3 Framework

  • Очистить/Восстановить решение

  • Open Test > Test Explorer > Run All

Я вижу все тестовые примеры

Надеюсь, что это поможет

Ответ 29

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

Я использовал visual studio 2012. По какой-то причине выполнялись только тесты исходного сгенерированного файла. Но тесты в другом файле не выполнялись. Пробовал разные решения, размещенные здесь, не работал.

Наконец, я понял, что у меня есть частный метод в тестовом классе, который был первым методом внутри класса. Я только что переместил частный метод после метода тестирования; поэтому теперь метод с атрибутом [TestMethod] - это метод first внутри класса. Странно, но теперь это работает.

Надеюсь, кому-нибудь это поможет.

Ответ 30

Тесты не любят методы async. Например:

    [TestMethod]
    public async void TestMethod1()
    {
        TestLib oLib = new TestLib();
        var bTest = await oLib.Authenticate();

    }

После этого:

    [TestMethod]
    public void TestAuth()
    {
        TestMethod1();
    }

    public async void TestMethod1()
    {
        TestLib oLib = new TestLib();
        var bTest = await oLib.Authenticate();

    }

Он увидел тест.