Тестовая изоляция с помощью dotnetcore, dotnet5, dotnet6

Можно ли запускать тесты изолированно с помощью dotnetcore, dotnet5, или же dotnet6?

Допустим, у меня есть класс без излишеств - минимальный рабочий пример:

      public static TheStaticFoo Current
{
    get => _current;

    private set
    {
        if (_current != null)
            throw new InvalidOperationException("Oh shucks, only one instance is allowed sorry!!!!");
        
        _current = value;
    }
}

Любые мои тесты вокруг этого:

      public class UnitTest1
{
    private readonly TheStaticFoo foo;
    
    public UnitTest1() => foo = new TheStaticFoo();

    [Fact]
    public void Test1() => Assert.Equal(TheStaticFoo.Current, foo);
}

Это работает отлично.

Но добавление второго теста не удается, как и ожидалось:

      [Fact]
public void AddingThisFails() => Assert.Equal(TheStaticFoo.Current, foo);

Это из-за того, что статика не снимается между тестами.

Можно ли запустить два теста изолированно, не изменяя TheStaticFoo? Здесь я использую xunit но мы надеемся, что это применимо к любой другой тестовой среде.

Я не уверен, подходит ли AssemblyLoadContext для этого.

0 ответов

Другие вопросы по тегам