Тестовая изоляция с помощью 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 для этого.