Вопросы и ответы об обозревателе тестов Visual Studio

Обнаружение динамических тестов

Обозреватель тестов не обнаруживает тесты, определенные динамически. (Например, теории, пользовательские адаптеры, пользовательские признаки, #ifdef и т. д.) Как сделать, чтобы они обнаруживались?

Выполните сборку проекта, чтобы запустить обнаружение на основе сборок.

Обнаружение тестов в реальном времени основано на источнике. Оно не способно обнаружить тесты, которые используют теории, пользовательские адаптеры, пользовательские признаки, операторы #ifdef и т. п., так как они определяются во время выполнения. Чтобы правильно распознать такие тесты, нужно выполнить сборку. В Visual Studio 2017 15.6 и более поздних версий обнаружение на основе сборок (традиционный метод) выполняется только после сборки. Это означает, что обнаружение тестов в реальном времени определяет максимально возможное количество тестов в процессе редактирования, а после сборки к ним добавляются динамически определяемые тесты благодаря обнаружению на основе сборок. Обнаружение тестов в реальном времени повышает скорость реакции системы, но сохраняет возможность получить полные и точные результаты после сборки.

Обозреватель тестов, символ плюса (+)

Что означает символ "+" (плюс) в верхней строке обозревателя тестов?

Символ "+" (плюс) означает, что после сборки и выполнения обнаружения на основе сборок могут быть обнаружены дополнительные тесты. Этот символ отображается, если в проекте обнаружены динамически определяемые тесты.

Plus symbol summary line

Обнаружение тестов в режиме реального времени

Теперь тесты появляются в обозревателе тестов сразу при вводе кода, не дожидаясь сборки. Что изменилось?

Эта возможность называется Обнаружение тестов в реальном времени. На основе анализатора Roslyn она обнаруживает тесты и переносит данные о них в обозреватель тестов прямо в режиме реального времени, еще до сборки проекта. Дополнительные сведения об алгоритме обнаружения для динамически определяемых тестов, например с использованием теорий или пользовательских признаков, см. в разделе Обнаружение динамических тестов.

Совместимость с обнаружением тестов в реальном времени

Какие языки и платформы тестирования поддерживают обнаружение тестов в реальном времени?

Обнаружение тестов в реальном времени работает только для управляемых языков (C# и Visual Basic), так как оно создано на основе компилятора Roslyn. На данном этапе обнаружение тестов в реальном времени работает только для платформ MSTest, NUnit и xUnit.

Журналы обозревателя тестов

Как можно включить журналы для обозревателя тестов?

Откройте Сервис>Параметры>Тест и найдите раздел "Ведение журнала".

Обнаружение тестов UWP

Почему мои тесты в проектах UWP не обнаруживаются без развертывания приложения?

Тесты UWP ориентируются на другую среду выполнения при развертывании приложения. Это означает, что для точного обнаружения тестов для проектов UWP нужно не только собрать, но и развернуть проект.

Сортировка в обозревателе тестов

Как работает сортировка результатов тестирования в иерархическом представлении?

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

Иерархическое представление в обозревателе тестов

В иерархическом представлении возле группирований родительских узлов есть значки пройденных, непройденных, пропущенных и невыполненных тестов. Что означают эти значки?

Значки возле группирований проектов, пространств имен и классов указывают на состояние тестов в определенном группировании. См. следующую таблицу.

Test Explorer Hierarchy Icons

Поиск по пути к файлу

В поле поиска обозревателя тестов исчез фильтр "Путь к файлу".

Фильтр "Путь к файлу" в поле поиска обозревателя тестов удален в Visual Studio 2017 версии 15.7. Эта функция используется мало. Чтобы обозреватель тестов получал методы теста быстрее, ее можно исключить. Если это изменение прерывает ваш поток разработки, сообщите нам, отправив отзыв в сообщество разработчиков.

Удаление недокументированных интерфейсов

Некоторые интерфейсы API, относящиеся к тесту, отсутствуют в Visual Studio 2019. Что изменилось?

В Visual Studio 2019 будут удалены некоторые API окон тестов, которые были ранее помечены как общедоступные, но никогда не были официально задокументированы. Они были помечены как "нерекомендуемые" в Visual Studio 2017, чтобы заранее предупредить группы обслуживания расширений. Насколько нам известно, с этими API-интерфейсами работала и была связана лишь незначительная часть расширений. К ним относятся IGroupByProvider, IGroupByProvider<T>, KeyComparer, ISearchFilter, ISearchFilterToken, ISearchToken и SearchFilterTokenType. Если это изменение влияет на ваше расширение, сообщите нам, отправив сведения об ошибке в сообщество разработчиков.

Ссылка NuGet для адаптера теста

В Visual Studio 2017 версии 15.8 тесты обнаруживаются, но не выполняются.

Все тестовые проекты должны содержать ссылку NuGet на адаптер тестов .NET в файле с расширением .csproj. Если такая ссылка отсутствует, в проекте появляется следующая информация о тесте, если после сборки выполняется поиск через расширение адаптера тестов или если пользователь пытается запустить выбранные тесты:

Тестовый проект {} не ссылается на адаптер NuGet .NET. Обнаружение или выполнение тестов для этого проекта могут не работать. Мы рекомендуем включать ссылку на адаптеры тестов NuGet. в каждый проект теста .NET в решении.

Вместо расширений адаптеров тестов проекты должны использовать пакеты NuGet для адаптеров тестов. Это требование значительно повышает производительность и снижает проблемы с непрерывной интеграцией. Дополнительные сведения о прекращении поддержки расширения адаптера теста .NET можно найти в заметках о выпуске.

UWP TestContainer не найден

Мои тесты UWP больше не выполняются в Visual Studio 2017 версии 15.7 и более поздних версий.

Последние тестовые проекты UWP указывают свойство сборки платформы тестирования, что позволяет повысить производительность при обнаружении тестовых приложений. Если у вас есть тестовый проект UWP, который был инициализирован в версии Visual Studio ниже 15.7, в разделе Вывод>Тесты вы можете увидеть следующую ошибку.

System.AggregateException: возникла одна или несколько ошибок. ---> System.InvalidOperationException: не удалось найти следующий объект TestContainer {} в Microsoft.VisualStudio.TestWindow.Controller.TestContainerProvider <GetTestContainerAsync>d__61.MoveNext()

Чтобы исправить эту проблему, сделайте следующее:

  • Обновите свойство сборки тестового проекта, используя следующий код.
<UnitTestPlatformVersion Condition="'$(UnitTestPlatformVersion)' == ''">$(VisualStudioVersion)</UnitTestPlatformVersion>
  • Обновите версию пакета SDK TestPlatform, используя следующий код.
<SDKReference Include="TestPlatform.Universal, Version=$(UnitTestPlatformVersion)" />

Использование предварительных версий функций

В Visual Studio 2019 включить предварительные версии функции в разделе Инструменты > Параметры > Среда > Предварительные версии функций.