xUnit IClassFixture не запускается при каждом тесте - PullRequest
0 голосов
/ 04 февраля 2020

В документации по IClassFixture https://xunit.net/docs/shared-context написано

"Непосредственно перед выполнением первых тестов в MyDatabaseTests xUnit. net создаст экземпляр DatabaseFixture. Для каждого теста он создаст новый экземпляр MyDatabaseTests и передаст общий экземпляр DatabaseFixture в конструктор. "

Я пристально смотрю на часть" Для каждого теста ". Потому что он вызывает только один раз унаследованный прибор, по крайней мере, в моем коде.

   public class TransportSequenceResourceAggregateServiceTests : IClassFixture<TransportSequenceResourceAggregateServiceFixture>
{
    private TransportSequenceResourceAggregateServiceFixture fixture;
    public TransportSequenceResourceAggregateServiceTests(TransportSequenceResourceAggregateServiceFixture fixture)
    {
        this.fixture = fixture;
    }

    [Fact]
    public void If_No_Aggregate_Exist_Return_Null()
    {
        var sut = fixture.transportSequenceResourceAggregateService;

        var aggrate = sut.Get("some_new_resource");

        Assert.True(aggrate == null);
    }

    [Fact]
    public void If_Resource_Does_Not_Exists_Create_New_Aggreagate()
    {
        var sut = fixture.transportSequenceResourceAggregateService;

        var aggrate = sut.Create("some_new_resource");

        Assert.True(aggrate.ResourcePosition == null);
        Assert.True(aggrate.TransportSequences == null);
    }

Но, возможно, я неправильно его читаю?

Разве не предполагается создавать новый прибор каждый раз? время запуска теста?

Спасибо

1 Ответ

1 голос
/ 04 февраля 2020

Обратите внимание, что MyDatabaseTests - это ваш тестовый класс, а DatabaseFixture - это экземпляр класса, который вы хотите создать один раз и передать каждому тесту

Непосредственно перед первыми тестами в MyDatabaseTests выполняется, xUnit. net создаст экземпляр DatabaseFixture .

Затем

Для каждого теста будет создан Новый экземпляр MyDatabaseTests и передать общий экземпляр DatabaseFixture в конструктор

Будет: для каждого теста xUnit создаст новый экземпляр класса теста и передаст уже созданный экземпляр Fixture

Другой подход

MyDatabaseTests => TransportSequenceResourceAggregateServiceTests
DatabaseFixture => TransportSequenceResourceAggregateServiceFixture

Таким образом, приспособление будет создано только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...