using AutoLot.Dal.Repos.Interfaces;
using AutoLot.Dal.Tests.Base;
using Microsoft.EntityFrameworkCore;
using Xunit;
namespace AutoLot.Dal.Tests.IntegrationTests
{
[Collection("Integation Tests")]
public class OrderTests : BaseTest,
IClassFixture
{
}
}
Добавьте в класс MakeTests
MakeRepo и присваивает его закрытой переменной readonly уровня класса. Переопределите метод Dispose и освободите в нем экземпляр MakeRepo:[Collection("Integration Tests")]
public class MakeTests : BaseTest,
IClassFixture
{
private readonly IMakeRepo _repo;
public MakeTests
{
_repo = new MakeRepo(Context);
}
public override void Dispose
{
_repo.Dispose;
}
...
}
Повторите те же действия для класса OrderTests
OrderRepo вместо MakeRepo:[Collection("Integration Tests")]
public class OrderTests : BaseTest,
IClassFixture
{
private readonly IOrderRepo _repo;
public OrderTests
{
_repo = new OrderRepo(Context);
}
public override void Dispose
{
_repo.Dispose;
}
...
}
Тестовые методы [Fact] и [Theory]
Тестовые методы без параметров называются
[Fact]). Тестовые методы, которые принимают параметры, называются [Theory]) и могут выполнять множество итераций с разными значениями, передаваемыми в качестве параметров. Чтобы взглянуть на такие виды тестов, создайте в проекте AutoLot.Dal.Tests новый файл класса по имени SampleTests.cs. Вот как выглядит оператор using:using Xunit;
namespace AutoLot.Dal.Tests
{
public class SampleTests
{
}
}
Начните с создания теста [Fact]
[Fact] все значения содержатся внутри тестового метода. Следующий простой пример проверяет, что 3 + 2 = 5:[Fact]
public void SimpleFactTest
{
Assert.Equal(5,3+2);
}
Что касается теста [Theory]
[InlineData], методов или классов. Здесь будет использоваться только атрибут [InlineData]. Создайте показанный ниже тест, которому предоставляются разные слагаемые и ожидаемый результат:[Theory]
[InlineData(3,2,5)]
[InlineData(1,-1,0)]
public void SimpleTheoryTest(int addend1, int addend2, int expectedResult)
{
Assert.Equal(expectedResult,addend1+addend2);
}
На заметку!
За дополнительными сведениями об инфраструктуре тестирования xUnit обращайтесь в документацию по ссылкеhttps://xunit.net/.Выполнение тестов
Хотя тесты xUnit можно запускать из командной строки (с применением dotnet test
Запрашивание базы данных
Вспомните, что создание экземпляров сущностей из базы данных обычно предусматривает выполнение оператора LINQ в отношении свойств DbSet
FromSqlRaw или FromSqlInterpolated с применением низкоуровневых запросов SQL. Сущности, загружаемые в коллекции DbSet, по умолчанию добавляются в ChangeTracker, но отслеживание можно отключать. Данные, загружаемые в коллекции DbSet без ключей, никогда не отслеживаются.Если связанные сущности уже загружены в DbSet
Car загружаются в коллекцию DbSet и затем связанные сущности Order загружаются в коллекцию DbSet того же самого экземпляра ApplicationDbContext, то навигационное свойство Car.Orders будет возвращать связанные сущности без повторного запрашивания базы данных.Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT