Модульное тестирование ASP .Net Core MVC с помощью Xunit - PullRequest
0 голосов
/ 02 июля 2018

Я изо всех сил пытался выполнить модульное тестирование с использованием xunit с моим проектом ASP .Net Core 2.1 MVC. Все ответы, которые я нашел, создают решение, внутри есть библиотека и xunit, тогда все работает отлично. В моем случае я использую MVC, и я хочу протестировать свои контроллеры, мои контроллеры - это мой API веб-службы, поэтому я хочу создать модульный тест с использованием xunit. Из-за всех ответов в Интернете означает ли это, что использование xunit для модульного тестирования для проекта MVC невозможно? Если возможно, поделитесь своим ответом. Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Ваш вопрос немного сложен для понимания, но есть несколько смущений, которые, я думаю, я смогу прояснить.

Во-первых, xUnit - это тестовая среда. Он не знает и не заботится о контроллерах, MVC и т. Д. Это всего лишь код. Другими словами, да, конечно, вы можете использовать xUnit для тестирования контроллеров, потому что один не имеет ничего общего с другим.

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

0 голосов
/ 02 июля 2018

Особенно с ASP.NET Core, который поддерживает Dependency Injection"из коробки", вы должны подумать о том, чтобы разделить логику на отдельные классы и сделать ваши контроллеры относительно глупыми. Это позволяет вам повторно использовать логику более легко. Классы, содержащие логику, при правильном разделении очень легко тестируются. Вы не несете ответственности за тестирование платформы ASP.NET Core, поэтому вам не нужно проверять, все ли в порядке. Проверяйте только свою логику.

Вы проверили Модульное тестирование C # в .NET Core с использованием dotnet test и xUnit и Начало работы с xUnit.net (.NET Core / ASP.NET Core) ?

...