Тесты, которые не выполняются в Test Explorer

В настоящее время я работаю над решением, которое в настоящее время 32 Unittests. Я работаю с ретранслятором-испытателем, который отлично работает. Все тесты запущены, все тесты показывают правильный результат теста. Теперь коллега сказал мне, что тесты не работают на его машине с помощью тестового проводника Visual Studio. Они не работают ни на моей машине, поэтому я могу исключить некоторые локальные недостающие файлы или что-то в этом роде.

Тест-проводник показывает все модульные тесты, но после нажатия "Запустить все" все тесты становятся серыми и не показывают результата тестового запуска:

enter image description here

  • Все тестовые классы являются общедоступными
  • Все тестовые классы имеют атрибут [TestClass] объявленный
  • Все методы тестирования используют [TestMethod]
  • Оба кода производительности и тестовые проекты предназначены для.NET 3.5.
  • Я уже пытался очистить сборку своего решения и/или удалить все папки obj, bin, Debug и Release

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

Ответ 1

Если ваши проекты не все AnyCpu, вы также можете проверить, соответствуют ли следующие 2 параметра:

  1. [Проект тестирования щелчка правой кнопкой мыши] → Свойства → Сборка → Цель платформы - например, x64

  2. [Главное меню] → Тест → Настройки тестирования → Архитектура процессора по умолчанию → X64

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

Ответ 2

У меня была та же проблема в VS 2017. В моем случае она была решена путем перезапуска VS.

Ответ 4

Мне пришлось изменить мои методы тестирования асинхронных задач, чтобы вернуть задачу вместо void.

Затем тесты были активными и выполнялись в Test Explorer.

Ответ 5

Проверьте, в какой среде тестируются тесты (например, nunit, xunit, VS test и т.д.) И убедитесь, что у вас установлен правильный адаптер адаптера/удлинителя.

Для меня это был NUnit 3 Test Adapter, который отсутствовал, и я подтвердил номер версии, требуемый, посмотрев версию зависимости nunit.framework.

Ответ 6

В моем случае это произошло из-за того, что в одном тестовом проекте в моем решении были установлены пакеты nuget MSTest.TestFramework и MSTest.TestAdapter, а в других - нет. Эти пакеты, по-видимому, не требовались для запуска тестов, пока их не установили в одном проекте решения.

Проблема была исправлена путем установки этих пакетов в тестовых проектах, в которых они отсутствовали.

Ответ 7

Решение Clean-Rebuild сработало для меня.

Ответ 8

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

Убедитесь, что у вас есть расширение Visual Studio, установленное через Tools - Extensions and Updates. В моем случае мне пришлось установить XUnit и Specflow из опции "Интернет".

Затем очистите решение и восстановите его.

Если это все еще не помогает, очистите свой временный каталог (найдите% temp% в меню "Пуск" и удалите все содержимое в Temp)

И затем, наконец, попробуйте удалить Resharper, который, наконец, устранил мою проблему.

Ответ 9

Для меня это исправило обновление пакетов nuget для MS.Test

Ответ 10

У меня перезапуск VS2017 не сработал. Мне пришлось очистить sln, а затем найти файл с тестами, которые не запускались, и запускать только этот файл. После этого я все запустил, и все снова заработало нормально.

Ответ 11

Вот это был тестовый проект, который не был помечен на сборку:

Build → Configuration Manager... → проверить сборку для вашего тестового проекта

Ответ 12

Так как я попал сюда с такой ошибкой, я публикую свою проблему/решение:

Симптомы:

  • Не все тесты выполнялись, но они не зависели от проекта, только некоторые из них были выполнены.
  • Все казненные были зелеными.
  • Технический стек: ядро dotnet/XUnit/FluentAssertions
  • Все тесты обнаружены и обновлены, если он изменился.
  • Путем выбора или запуска "Не выполненных тестов" несколько раз они могут быть выполнены.

Проблема:

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

Ответ 13

Для меня решение заключалось в том, чтобы изменить параметры тестирования Resharper Unit "Архитектура платформы по умолчанию" на "x64",

enter image description here

Ответ 14

если какой-либо из тестов находится в рабочем режиме, то "Выполнить тесты" будет отключен. Пожалуйста, проверьте.

Ответ 15

Для меня (не совсем решение) это было отмена выбора файла .testsettings в Меню [Тест] → [Настройки теста] → [{текущий файл}], чтобы снять отметку с текущего используемого файла.

В моем случае это начинается так.

<TestSettings name="Local (with code coverage)" id="e81d13d9-42d0-41b9-8f31-f719648d8d2d" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Deployment>
    <DeploymentItem filename="ConfigurationImportExportTest\Configurations\" />
    <DeploymentItem filename="output\Debug\" />
  </Deployment>
  <Execution>

Очевидно, DeploymentItem мешает.

потому что это было на вкладке "Вывод":

Warning: Test Run deployment issue: The assembly or module 'Microsoft.SqlServer.Management.SqlParser' directly or indirectly referenced by deployment item 'output\Debug\' specified by the test settings was not found.
.... more of the same

Это не говорит мне много.
Похоже, это связано с тем, что все проекты помещают свои продукты для компиляции в общую папку \output\Debug

однако это, кажется, не мешает этому. Это выдает еще одно предупреждение с упоминанием таких вещей, как

A testsettings or runsettings file with 'ForcedLegacyMode = TRUE or VSMDI files are not supported by MSTest-V2.

Это, кажется, остановить это.

Ответ 16

Проверьте в файле вашего проекта ссылки на NUnit разных версий:

В моем случае я установил версию 3.11.0 как NUnit, так и NUnit3TestAdapter, но в файле проекта были старые ссылки на версию 2.6.4, которые не были удалены при новой установке.

  • Решение (рекомендуется для устранения проблем с ссылками, см. Документы):

    Переустановите NUnit и NUnit3TestAdapter, это исправило ссылки в моем проекте.
PM> Update-Package NUnit -reinstall
...
PM> Update-Package NUnit3TestAdapter -reinstall
  • Решение 2 (в случае переустановки не исправить ссылки):

    Удалите и установите NUnit и NUnit3TestAdapter.
PM> Uninstall-Package NUnit
...
PM> Uninstall-Package NUnit3TestAdapter
...
PM> Install-Package NUnit
...
PM> Install-Package NUnit3TestAdapter

Ответ 17

Для меня это было вызвано расширением VS для измерения покрытия кода. Он не может ссылаться на конкретную сборку и, следовательно, не будет запускать какие-либо тесты. Тесты будут работать нормально из командной строки, используя:

dotnet test

Чтобы решить эту проблему, вы можете выбрать копирование ВСЕХ зависимостей в папку отладки вашего тестового проекта. Это гарантирует, что любые сборки могут быть разрешены, поскольку "неиспользуемые" сборки не удаляются. Вы можете добавить следующее в ваши тестовые проекты .csprog файл:

<PropertyGroup>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

Ответ 18

У меня были разные версии пакетов nuget NUnit (3.11.0) и NunitTestAdapter (3.12.0). Когда я обновил NUnit до 3.12.0, Visual Studio запустила тесты.

Ответ 19

В моем случае это помогло обновить пакеты nuget MSTest. Может воспроизвести эту проблему даже на пустом проекте MSTest и работает обновление пакетов.

Ответ 20

Для меня наличие свойства с именем TestContext в базовом классе было причиной такого поведения. Например:

[TestClass]
public abstract class TestClassBase
{
    protected object TestContext { get; private set; }
}

[TestClass]
public class TestClass : TestClassBase
{
    // This method not found
    [TestMethod]
    public void TestCase() {}
}

Ответ 21

Попробуйте удалить атрибут [Ignore] сверху тестового метода.