MSTest Adapter
Package: FluentDocker.Testing.MsTest
Step by Step
- Basics: Helper Methods, Container Example, Per-Test Lifecycle
- Intermediate: Compose Example, Swarm Stack Example, Podman Kubernetes Example
- Advanced: Generic / Custom Resource
Helper Methods
MsTestResourceHelpers provides static async methods for creating and disposing resources.
Container Example
[TestClass]
public class RedisTests
{
private static FluentDockerKernel _kernel;
private static ContainerResource _resource;
[ClassInitialize]
public static async Task ClassInit(TestContext context)
{
(_kernel, _resource) = await MsTestResourceHelpers.CreateContainerAsync(
builder => builder
.UseImage("redis:alpine")
.WaitForPort("6379/tcp"));
}
[ClassCleanup]
public static async Task ClassCleanup()
{
await MsTestResourceHelpers.DisposeAsync(_resource, _kernel);
}
[TestMethod]
public async Task Redis_IsRunning()
{
var info = await _resource.InspectAsync();
Assert.IsTrue(info.State.Running);
}
}
Per-Test Lifecycle
[TestClass]
public class PerTestRedisTests
{
private FluentDockerKernel _kernel;
private ContainerResource _resource;
[TestInitialize]
public async Task Setup()
{
(_kernel, _resource) = await MsTestResourceHelpers.CreateContainerAsync(
builder => builder.UseImage("redis:alpine"));
}
[TestCleanup]
public async Task Cleanup()
{
await MsTestResourceHelpers.DisposeAsync(_resource, _kernel);
}
}
Compose Example
[ClassInitialize]
public static async Task ClassInit(TestContext context)
{
(_kernel, _resource) = await MsTestResourceHelpers.CreateComposeAsync(
builder => builder
.WithComposeFile("docker-compose.yml")
.WithProjectName("integration-tests"));
}
Swarm Stack Example
[ClassInitialize]
public static async Task ClassInit(TestContext context)
{
(_kernel, _resource) = await MsTestResourceHelpers.CreateSwarmStackAsync(
new StackDeployConfig
{
StackName = "my-stack",
ComposeFiles = { "docker-compose.yml" }
});
}
Podman Kubernetes Example
[ClassInitialize]
public static async Task ClassInit(TestContext context)
{
(_kernel, _resource) = await MsTestResourceHelpers.CreatePodmanKubernetesAsync(
new KubePlayConfig { YamlPath = "pod.yaml" },
kernelFactory: async () => await FluentDockerKernel.Create()
.WithPodmanCli("podman", d => d.AsDefault())
.BuildAsync());
}
Generic / Custom Resource
Use CreateResourceAsync<T> for plugin or custom ITestResource types:
[ClassInitialize]
public static async Task ClassInit(TestContext context)
{
(_kernel, _resource) = await MsTestResourceHelpers.CreateResourceAsync<ContainerResource>(
kernel => new ContainerResource(kernel,
c => c.UseImage("redis:alpine").WaitForPort("6379/tcp")));
}