Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
public static void InitializeData(ApplicationDbContext context){ DropAndCreateDatabase(context); SeedData(context);}public static void ClearAndReseedDatabase(ApplicationDbContext context){ ClearData(context); SeedData(context);}Настройка тестов
Вместо создания клиентского приложения для испытания скомпилированного уровня доступа к данным
AutoLotAssertСоздание проекта
Первым делом необходимо настроить платформу интеграционного тестирования с использованием xUnit — инфраструктуры тестирования, совместимой с .NET Core. Начните с добавления нового по имени
AutoLot.Dal.TestsНа заметку! Модульные тесты предназначены для тестирования одной единицы кода. Формально повсюду в главе создаются интеграционные тесты, т.к. производится тестирование кода C# и EF Core на всем пути к базе данных и обратно.
Введите следующую команду в окне командной строки:
dotnet new xunit -lang c# -n AutoLot.Dal.Tests -o .AutoLot.Dal.Tests -f net5.0dotnet sln .Chapter23_AllProjects.sln add AutoLot.Dal.TestsДобавьте в проект
AutoLot.Dal.TestsMicrosoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.SqlServerMicrosoft.Extensions.Configuration.JsonПоскольку версия пакета Microsoft.NET.Test.Sdk, поставляемая с шаблоном проектов xUnit, обычно отстает от текущей доступной версии, воспользуйтесь диспетчером пакетов NuGet для обновления всех пакетов NuGet. Затем добавьте ссылки на проекты
AutoLot.ModelsAutoLot.DalВ случае работы с CLI выполните приведенные далее команды(обратите внимание, что команды удаляют и повторно добавляют пакет
Microsoft.NET.Test.Sdkdotnet add AutoLot.Dal.Tests package Microsoft.EntityFrameworkCoredotnet add AutoLot.Dal.Tests package Microsoft.EntityFrameworkCore.SqlServerdotnet add AutoLot.Dal.Tests package Microsoft.Extensions.Configuration.Jsondotnet remove AutoLot.Dal.Tests package Microsoft.NET.Test.Sdkdotnet add AutoLot.Dal.Tests package Microsoft.NET.Test.Sdkdotnet add AutoLot.Dal.Tests reference AutoLot.Daldotnet add AutoLot.Dal.Tests reference AutoLot.ModelsКонфигурирование проекта
Для извлечения строки подключения во время выполнения будут задействованы конфигурационные возможности .NET Core, предусматривающие работу с файлом JSON. Добавьте в проект файл JSON по имени
appsettings.json{ "ConnectionStrings": { "AutoLot": "server=.,5433;Database=AutoLotFinal; User Id=sa;Password=P@ssw0rd;" }}Модифицируйте файл проекта, чтобы файл
appsettings.jsonAutoLot.Dal.Tests.csprojItemGroup<ItemGroup> <None Update="appsettings.json"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None></ItemGroup>Создание класса TestHelpers
Класс
TestHelpersApplicationDbContextTestHelpers.csusingusing System.IO;using AutoLot.Dal.EfStructures;using Microsoft.EntityFrameworkCore;using Microsoft.EntityFrameworkCore.Storage;using Microsoft.Extensions.Configuration;namespace AutoLot.Dal.Tests{ public static class TestHelpers { }}Определите два открытых статических метода, предназначенные для создания экземпляров реализации
IConfigurationApplicationDbContextpublic static IConfiguration GetConfiguration() =>