Ductus.FluentDocker.XUnit
2.85.0
dotnet add package Ductus.FluentDocker.XUnit --version 2.85.0
NuGet\Install-Package Ductus.FluentDocker.XUnit -Version 2.85.0
<PackageReference Include="Ductus.FluentDocker.XUnit" Version="2.85.0" />
<PackageVersion Include="Ductus.FluentDocker.XUnit" Version="2.85.0" />
<PackageReference Include="Ductus.FluentDocker.XUnit" />
paket add Ductus.FluentDocker.XUnit --version 2.85.0
#r "nuget: Ductus.FluentDocker.XUnit, 2.85.0"
#:package Ductus.FluentDocker.XUnit@2.85.0
#addin nuget:?package=Ductus.FluentDocker.XUnit&version=2.85.0
#tool nuget:?package=Ductus.FluentDocker.XUnit&version=2.85.0
FluentDocker for XUnit
In addition to the standard FluentDocker usage, it adds the ability to use easy testing with containers via XUnit.
For example, fire up a Postgres container inside the test could look like this
public class PostgresXUnitTests : IClassFixture<PostgresTestBase>
{
[Fact]
public void Test()
{
// We now have a running Postgres
// and a valid connection string to use.
}
}
This library enables docker and docker-compose interactions using a Fluent API. It is supported on Linux, Windows and Mac. It also has support for the legacy docker-machine interactions.
Have a look at the project site for more information.
Sample Fluent API usage
using (
var container =
new Builder().UseContainer()
.UseImage("kiasaki/alpine-postgres")
.ExposePort(5432)
.WithEnvironment("POSTGRES_PASSWORD=mysecretpassword")
.WaitForPort("5432/tcp", 30000 /*30s*/)
.Build()
.Start())
{
var config = container.GetConfiguration(true);
Assert.AreEqual(ServiceRunningState.Running, config.State.ToServiceState());
}
The following snippet fires up Postgres and waits for it to be ready. It uses docker-compose file to perform the task.
var file = Path.Combine(Directory.GetCurrentDirectory(),
(TemplateString) "Resources/ComposeTests/WordPress/docker-compose.yml");
using (var svc = new Builder()
.UseContainer()
.UseCompose()
.FromFile(file)
.RemoveOrphans()
.WaitForHttp("wordpress", "http://localhost:8000/wp-admin/install.php")
.Build().Start())
{
// We now have a running WordPress with a MySql database
var installPage = await "http://localhost:8000/wp-admin/install.php".Wget();
Assert.IsTrue(installPage.IndexOf("https://wordpress.org/", StringComparison.Ordinal) != -1);
Assert.AreEqual(1, svc.Hosts.Count); // The host used by compose
Assert.AreEqual(2, svc.Containers.Count); // We can access each individual container
Assert.AreEqual(2, svc.Images.Count); // And the images used.
}
👀 It has tons of features, including a low-level command style, services and finally, the Fluent API on top of it.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Ductus.FluentDocker (>= 2.85.0)
- System.Runtime.InteropServices.RuntimeInformation (>= 4.3.0)
-
net6.0
- Ductus.FluentDocker (>= 2.85.0)
-
net8.0
- Ductus.FluentDocker (>= 2.85.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Ductus.FluentDocker.XUnit:
| Package | Downloads |
|---|---|
|
CodeDesignPlus.Net.xUnit
CodeDesignPlus.Net.xUnit provides a set of utilities and extensions for enhancing xUnit tests in .NET Core applications. This library simplifies the process of writing and managing unit tests, enabling developers to build robust and maintainable test suites. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Ductus.FluentDocker.XUnit:
| Repository | Stars |
|---|---|
|
kurrent-io/KurrentDB
KurrentDB is a database that's engineered for modern software applications and event-driven architectures. Its event-native design simplifies data modeling and preserves data integrity while the integrated streaming engine solves distributed messaging challenges and ensures data consistency.
|
| Version | Downloads | Last Updated |
|---|---|---|
| 2.85.0 | 67,122 | 7/25/2025 |
| 2.84.0 | 705 | 7/25/2025 |
| 2.83.0 | 19,523 | 6/27/2025 |
| 2.82.0 | 311 | 6/27/2025 |
| 2.81.0 | 317 | 6/27/2025 |
| 2.80.0 | 333 | 6/27/2025 |
| 2.79.0 | 415 | 6/27/2025 |
| 2.10.59 | 476,064 | 1/11/2023 |
| 2.10.57 | 24,102 | 9/24/2022 |
| 2.10.56 | 4,153 | 8/24/2022 |
| 2.10.55 | 13,818 | 6/24/2022 |
| 2.10.54 | 724 | 6/24/2022 |
| 2.10.53 | 744 | 6/23/2022 |
| 2.10.51 | 2,481 | 6/7/2022 |
| 2.10.50 | 822 | 6/7/2022 |
| 2.10.48 | 1,856 | 5/30/2022 |
| 2.10.46 | 744 | 5/30/2022 |
| 2.10.45 | 48,986 | 3/9/2022 |
| 2.10.44 | 25,594 | 12/8/2021 |
| 2.10.42 | 3,839 | 11/24/2021 |