diff --git a/src/Ephemerally.Redis.Xunit/Ephemerally.Redis.Xunit.csproj b/src/Ephemerally.Redis.Xunit/Ephemerally.Redis.Xunit.csproj
index 4243601..b19e374 100644
--- a/src/Ephemerally.Redis.Xunit/Ephemerally.Redis.Xunit.csproj
+++ b/src/Ephemerally.Redis.Xunit/Ephemerally.Redis.Xunit.csproj
@@ -15,6 +15,7 @@
+
diff --git a/src/Ephemerally.Redis.Xunit/RedisMultiplexerFixture.cs b/src/Ephemerally.Redis.Xunit/RedisMultiplexerFixture.cs
index ce8d61c..4366a09 100644
--- a/src/Ephemerally.Redis.Xunit/RedisMultiplexerFixture.cs
+++ b/src/Ephemerally.Redis.Xunit/RedisMultiplexerFixture.cs
@@ -1,4 +1,5 @@
-using StackExchange.Redis;
+using Ephemerally.Xunit;
+using StackExchange.Redis;
using Xunit;
namespace Ephemerally.Redis.Xunit;
@@ -12,26 +13,18 @@ public class RedisMultiplexerFixture()
: RedisMultiplexerFixture(new TEphemeralRedisInstance())
where TEphemeralRedisInstance : IRedisInstanceFixture, new();
-public class RedisMultiplexerFixture : IRedisMultiplexerFixture, IAsyncLifetime, IAsyncDisposable
+public class RedisMultiplexerFixture(ISubjectFixture redisInstanceFixture)
+ : SubjectFixture, IRedisMultiplexerFixture, IAsyncLifetime, IAsyncDisposable
{
private bool _disposed;
- private readonly IRedisInstanceFixture _redisInstanceFixture;
- private readonly Lazy> _multiplexer;
+ protected ISubjectFixture RedisInstanceFixture { get; } = redisInstanceFixture;
- public IConnectionMultiplexer Multiplexer => _multiplexer.Value.Result;
-
- protected Task GetMultiplexer() => _multiplexer.Value;
+ public IConnectionMultiplexer Multiplexer => GetOrCreateSubjectAsync().Result;
public RedisMultiplexerFixture() : this(UnmanagedDefaultLocalRedisInstanceFixture.DefaultLocalRedisInstanceFixture) { }
- protected RedisMultiplexerFixture(IRedisInstanceFixture redisInstanceFixture)
- {
- _redisInstanceFixture = redisInstanceFixture;
- _multiplexer = new Lazy>(CreateMultiplexerAsync);
- }
-
- protected virtual async Task CreateMultiplexerAsync() =>
+ protected override async Task CreateSubjectAsync() =>
await ConnectionMultiplexer.ConnectAsync(_redisInstanceFixture.ConnectionString);
public virtual async Task InitializeAsync()
@@ -39,7 +32,7 @@ public virtual async Task InitializeAsync()
await _redisInstanceFixture.InitializeAsync();
}
- public virtual async Task DisposeAsync()
+ public override async Task DisposeAsync()
{
if (_disposed) return;
_disposed = true;