MSTest: CS0117 «Утверждение» не содержит определения для «ThrowsException» - PullRequest
1 голос
/ 16 февраля 2020

Я пишу некоторые модульные тесты с помощью MSTest, используя C#, MSVS 2015 и. Net 4.6.1.

Эта строка:

Assert.ThrowsException<ArgumentOutOfRangeException>( () => 
  select.AllSelectedOptions[0]
);

Сбой с этим ошибка компиляции:

CS0117 «Assert» не содержит определения для «ThrowsException»

Мое пространство имен - Microsoft.VisualStudio.TestTools.UnitTesting (по умолчанию при создании проекта модульного теста в MSVS).

Согласно документации, Assert.ThrowsException (Action) должно существовать. Но я не вижу его в Intellisense ... и у меня появляется ошибка компиляции.

Я пробовал несколько разных версий MSVS (MSVS 2015 и MSVS 2019) и несколько разных версии MSTest.

В: Есть идеи, что может быть не так?


Как сказал Клинт ниже , мне нужно установить MSTest v2 из NuGet для использования Assert.ThrowsException<T>() в MSVS 2015.

Но после этого MSVS больше не находит ни одного из моих тестов:

MSVS> Test> Run All (или «Тест> Отладка> Все тесты»):

------ Discover test started ------
========== Discover test finished: 0 found (0:00:01.127375) ==========

Есть предложения?

1 Ответ

2 голосов
/ 16 февраля 2020

Вам необходимо использовать [ MSTest V2 ], чтобы иметь возможность Assert.ThrowsException

Начиная с VS2017 , входящего в комплект поставки Unit Test В шаблонах проектов используется только MSTest V2.

Теперь, когда вы находитесь на VS2015 , вы можете установить этот пакет MSTest.Test из Nuget , но обязательно удалите старые тестовые ссылки как Microsoft.VisualStudio.QualityTools.UnitTestFramework перед обновлением до этого пакета

Добавить> Новый тестовый проект> Выбрать тип проекта MSTest

После этого вы сможете использовать Assert.ThrowsException<ArgumentOutOfRangeException>(

К обнаружение и выполнение тестов также гарантируют установку MSTest.TestAdapter.

Далее Чтение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...