Чтение онлайн

ЖАНРЫ

Язык программирования C#9 и платформа .NET5
Шрифт:

using AutoLot.Dal.Tests.Base;

using AutoLot.Models.Entities;

using Microsoft.EntityFrameworkCore;

using Xunit;

namespace AutoLot.Dal.Tests.IntegrationTests

{

[Collection("Integation Tests")]

public class CustomerTests : BaseTest,

IClassFixture<EnsureAutoLotDatabaseTestFixture>

{

}

}

// MakeTests.cs

using System.Linq;

using AutoLot.Dal.Repos;

using AutoLot.Dal.Repos.Interfaces;

using AutoLot.Dal.Tests.Base;

using AutoLot.Models.Entities;

using Microsoft.EntityFrameworkCore;

using Microsoft.EntityFrameworkCore.ChangeTracking;

using Xunit;

namespace AutoLot.Dal.Tests.IntegrationTests

{

[Collection("Integation Tests")]

public class MakeTests : BaseTest,

IClassFixture<EnsureAutoLotDatabaseTestFixture>

{

}

}

// OrderTests.cs

using System.Linq;

using AutoLot.Dal.Repos;

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<EnsureAutoLotDatabaseTestFixture>

{

}

}

Добавьте

в класс
MakeTests
конструктор, который создает экземпляр
MakeRepo
и присваивает его закрытой переменной
readonly
уровня класса. Переопределите метод
Dispose
и освободите в нем экземпляр
MakeRepo
:

[Collection("Integration Tests")]

public class MakeTests : BaseTest,

IClassFixture<EnsureAutoLotDatabaseTestFixture>

{

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<EnsureAutoLotDatabaseTestFixture>

{

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
), разработчикам лучше использовать для этого Visual Studio. Выберите в меню Test (Тестирование) пункт Test Explorer (Проводник тестов), чтобы получить возможность прогонять и отлаживать все или выбранные тесты.

Поделиться с друзьями: