I have already tests with Sqlite – however,it will be better to try tests with a real SqlServer .
One of the way to have a sql server is to have docker – but how to start docker with sql server any time ?
One of answers is Ductus.FluentDocker – https://www.nuget.org/packages/Ductus.FluentDocker – and this is the code to start SqlServer:
public override void StartDatabase()
{
//string guid = Guid.NewGuid().ToString("N");
string uniqueId = Interlocked.Increment(ref uniq).ToString(); //Guid.NewGuid().ToString("N");
container =
new Builder()
.UseContainer()
.WithName("sql" + uniqueId)
.UseImage("mcr.microsoft.com/mssql/server:2022-latest")
.ExposePort(1433,1433)
.WithEnvironment("SA_PASSWORD=<YourStrong@Passw0rd>","ACCEPT_EULA=Y")
.WaitForMessageInLog("Starting up database 'tempdb'.",TimeSpan.FromSeconds(30))
.Build()
.Start();
ConstructServiceProvider();
}
static int uniq = 0;
I needed also a Base class for consolidating code between sql server and sqlite
-
generating DI with for both with different context
-
The Steps are the same = so base class
-
The tests are the same= so base class
So this is the base class:
public abstract partial class RealDBTests: FeatureFixture
{
[SetUp]
public void Start()
{
StartDatabase();
}
[TearDown]
public void Stop()
{
StopDatabase();
}
public abstract void StartDatabase();
public abstract void StopDatabase();
public abstract IServiceCollection AddDB( IServiceCollection sc);
public void ConstructServiceProvider()
{
serviceProvider = AddDB(new ServiceCollection())
//more DI
}
}
Also,GitHub actions supports docker – so now TILT has a complete testing also in SqlServer.
Tools used
Docker
Visual Studio
Ductus.FluentDocker
Leave a Reply