Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7
Создадим новый проект ASP.NET Core по типу ASP.NET Core Web App (Model-View-Controller):
Пусть проект будет называться UnitTestApp.
Теперь для него добавим проект юнит-тестов.
Согласно условностям название проекта юнит-тестов называется [название_приложения].Tests. Итак, добавим в решение новый проект по типу Class Library (.NET Core):
Назовем его UnitTestApp.Tests
Стоит отметить, что начиная с Visual Studio 2019 специально для тестов были добавлены три типа проектов: xUnit Test Project(.NET Core), MSTest Test Project(.NET Core) и NUnit Test Project(.NET Core), которые для тестирования используют соответственно фреймворк xUnit, MSTest Framework и NUnit. В реальности разница между ними небольшая. И если мы используем VS 2019, то сразу можем выбрать один из этих проектов. Однако в данном случае мы возьмем именно проект библиотеки классов и вручную добавим в нее все нужные зависимости.
В итоге после создания проекта все решение будет иметь следующую структуру:
Удалим из проекта тестов созданный по умолчанию файл Class1.cs, так как он нам не нужен.
Теперь добавим фреймворк юнит-тестов. Существует множество фреймворков. В данном случае мы будем использовать xUnit как наиболее распространенный фреймворк в связке с ASP.NET Core (хотя можно использовать и другие фреймворки, которые более предпочтительны).
Чтобы использовать xUnit, в проект тестов (то есть UnitTestApp.Tests) необходимо добавить через NuGet три пакета:
Microsoft.NET.Test.Sdk
xunit: функционал фреймворка тестирования
xunit.runner.visualstudio: обеспечивает интеграцию с Visual Studio
Причем вначале лучще добавлять Microsoft.NET.Test.Sdk, так как он содержит ряд зависимостей,используемых в xunit.runner.visualstudio.
Как было отмечено выше, в Visual Studio 2019 мы могли бы выбрать для создания проекта тестов шаблон xUnit Test Project(.NET Core) - он по умолчанию включает все выше описанные пакеты.
После добавления этих пакетов также в проекте тестов необходимо добавить ссылку на главный проект:
Таким образом, проект тестов настроен, и мы можем приступать к тестированию.