diff --git a/Directory.Packages.props b/Directory.Packages.props
index 7653922744..ce5cab912e 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -102,6 +102,7 @@
+
diff --git a/test/HealthChecks.SqlServer.Tests/Functional/SqlServerHealthCheckTests.cs b/test/HealthChecks.SqlServer.Tests/Functional/SqlServerHealthCheckTests.cs
index bc04019e8c..0d4fcbcc73 100644
--- a/test/HealthChecks.SqlServer.Tests/Functional/SqlServerHealthCheckTests.cs
+++ b/test/HealthChecks.SqlServer.Tests/Functional/SqlServerHealthCheckTests.cs
@@ -2,12 +2,12 @@
namespace HealthChecks.SqlServer.Tests.Functional;
-public class sqlserver_healthcheck_should
+public class sqlserver_healthcheck_should(SqlServerContainerFixture sqlServerContainerFixture) : IClassFixture
{
[Fact]
public async Task be_healthy_if_sqlServer_is_available()
{
- var connectionString = "Server=tcp:localhost,5433;Initial Catalog=master;User Id=sa;Password=Password12!;Encrypt=false";
+ var connectionString = sqlServerContainerFixture.GetConnectionString();
var webHostBuilder = new WebHostBuilder()
.ConfigureServices(services =>
@@ -57,7 +57,7 @@ public async Task be_unhealthy_if_sqlServer_is_not_available()
[Fact]
public async Task be_unhealthy_if_sqlquery_spec_is_not_valid()
{
- var connectionString = "Server=tcp:localhost,5433;Initial Catalog=master;User Id=sa;Password=Password12!;Encrypt=false";
+ var connectionString = sqlServerContainerFixture.GetConnectionString();
var webHostBuilder = new WebHostBuilder()
.ConfigureServices(services =>
diff --git a/test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj b/test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj
index 34af181f2b..d481f6a29e 100644
--- a/test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj
+++ b/test/HealthChecks.SqlServer.Tests/HealthChecks.SqlServer.Tests.csproj
@@ -1,5 +1,9 @@
+
+
+
+
diff --git a/test/HealthChecks.SqlServer.Tests/RedisContainerFixture.cs b/test/HealthChecks.SqlServer.Tests/RedisContainerFixture.cs
new file mode 100644
index 0000000000..69d034e03b
--- /dev/null
+++ b/test/HealthChecks.SqlServer.Tests/RedisContainerFixture.cs
@@ -0,0 +1,35 @@
+using Testcontainers.MsSql;
+
+namespace HealthChecks.SqlServer.Tests;
+
+public sealed class SqlServerContainerFixture : IAsyncLifetime
+{
+ public const string Registry = "mcr.microsoft.com";
+
+ public const string Image = "mssql/server";
+
+ public const string Tag = "2022-latest";
+
+ public MsSqlContainer? Container { get; private set; }
+
+ public string GetConnectionString() => Container?.GetConnectionString() ??
+ throw new InvalidOperationException("The test container was not initialized.");
+
+ public async Task InitializeAsync() => Container = await CreateContainerAsync();
+
+ public async Task DisposeAsync()
+ {
+ if (Container is not null)
+ await Container.DisposeAsync();
+ }
+
+ public static async Task CreateContainerAsync()
+ {
+ var container = new MsSqlBuilder()
+ .WithImage($"{Registry}/{Image}:{Tag}")
+ .Build();
+ await container.StartAsync();
+
+ return container;
+ }
+}