Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
public static void InitializeData(ApplicationDbContext context)
{
DropAndCreateDatabase(context);
SeedData(context);
}
public static void ClearAndReseedDatabase(ApplicationDbContext context)
{
ClearData(context);
SeedData(context);
}
Настройка тестов
Вместо создания клиентского приложения для испытания скомпилированного уровня доступа к данным
AutoLot
Assert
Создание проекта
Первым делом необходимо настроить платформу интеграционного тестирования с использованием xUnit — инфраструктуры тестирования, совместимой с .NET Core. Начните с добавления нового по имени
AutoLot.Dal.Tests
На заметку! Модульные тесты предназначены для тестирования одной единицы кода. Формально повсюду в главе создаются интеграционные тесты, т.к. производится тестирование кода C# и EF Core на всем пути к базе данных и обратно.
Введите следующую команду в окне командной строки:
dotnet new xunit -lang c# -n AutoLot.Dal.Tests -o .AutoLot.Dal.Tests -f net5.0
dotnet sln .Chapter23_AllProjects.sln add AutoLot.Dal.Tests
Добавьте в проект
AutoLot.Dal.Tests
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.Extensions.Configuration.Json
Поскольку версия пакета Microsoft.NET.Test.Sdk, поставляемая с шаблоном проектов xUnit, обычно отстает от текущей доступной версии, воспользуйтесь диспетчером пакетов NuGet для обновления всех пакетов NuGet. Затем добавьте ссылки на проекты
AutoLot.Models
AutoLot.Dal
В случае работы с CLI выполните приведенные далее команды(обратите внимание, что команды удаляют и повторно добавляют пакет
Microsoft.NET.Test.Sdk
dotnet add AutoLot.Dal.Tests package Microsoft.EntityFrameworkCore
dotnet add AutoLot.Dal.Tests package Microsoft.EntityFrameworkCore.SqlServer
dotnet add AutoLot.Dal.Tests package Microsoft.Extensions.Configuration.Json
dotnet remove AutoLot.Dal.Tests package Microsoft.NET.Test.Sdk
dotnet add AutoLot.Dal.Tests package Microsoft.NET.Test.Sdk
dotnet add AutoLot.Dal.Tests reference AutoLot.Dal
dotnet 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.json
AutoLot.Dal.Tests.csproj
ItemGroup
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
Создание класса TestHelpers
Класс
TestHelpers
ApplicationDbContext
TestHelpers.cs
using
using 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
{
}
}
Определите два открытых статических метода, предназначенные для создания экземпляров реализации
IConfiguration
ApplicationDbContext
public static IConfiguration GetConfiguration() =>