-
-
Notifications
You must be signed in to change notification settings - Fork 110
Closed
Description
When using property injection with SharedType.None the classes are constructed and initialized twice causing race conditions
Reproducible snippet
public sealed class BasicDependency
{
public BasicDependency()
{
Console.WriteLine("BasicDependency Constructor()");
}
}
public sealed class BasicAsyncDependency : IAsyncInitializer
{
public BasicAsyncDependency()
{
Console.WriteLine("BasicAsyncDependency Constructor()");
}
public async Task InitializeAsync()
{
Console.WriteLine("BasicAsyncDependency InitializeAsync()");
}
}
public class BasicTest
{
[ClassDataSource<BasicAsyncDependency>(Shared = SharedType.None)]
public required BasicAsyncDependency AsyncDependency { get; init; }
[ClassDataSource<BasicDependency>(Shared = SharedType.None)]
public required BasicDependency Dependency { get; init; }
[Test]
public async Task Foo()
{
await Assert.That(AsyncDependency).IsNotNull();
await Assert.That(Dependency).IsNotNull();
}
}Actual Output
BasicAsyncDependency Constructor()
BasicDependency Constructor()
BasicAsyncDependency Constructor()
BasicDependency Constructor()
BasicAsyncDependency InitializeAsync()
BasicAsyncDependency InitializeAsync()
Expected Output
BasicAsyncDependency Constructor()
BasicDependency Constructor()
BasicAsyncDependency InitializeAsync()
Versions tested
- 0.76.18 - OK
- 0.76.26 - FAIL
- 1.20.0 - FAIL
Metadata
Metadata
Assignees
Labels
No labels