Ductus.FluentDocker.XUnit
2.83.0
dotnet add package Ductus.FluentDocker.XUnit --version 2.83.0
NuGet\Install-Package Ductus.FluentDocker.XUnit -Version 2.83.0
<PackageReference Include="Ductus.FluentDocker.XUnit" Version="2.83.0" />
<PackageVersion Include="Ductus.FluentDocker.XUnit" Version="2.83.0" />
<PackageReference Include="Ductus.FluentDocker.XUnit" />
paket add Ductus.FluentDocker.XUnit --version 2.83.0
#r "nuget: Ductus.FluentDocker.XUnit, 2.83.0"
#addin nuget:?package=Ductus.FluentDocker.XUnit&version=2.83.0
#tool nuget:?package=Ductus.FluentDocker.XUnit&version=2.83.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.83.0)
- System.Runtime.InteropServices.RuntimeInformation (>= 4.3.0)
-
net6.0
- Ductus.FluentDocker (>= 2.83.0)
-
net8.0
- Ductus.FluentDocker (>= 2.83.0)
NuGet packages
This package is not used by any NuGet packages.
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.83.0 | 51 | 6/27/2025 |
2.82.0 | 42 | 6/27/2025 |
2.81.0 | 42 | 6/27/2025 |
2.80.0 | 45 | 6/27/2025 |
2.79.0 | 63 | 6/27/2025 |
2.10.59 | 308,784 | 1/11/2023 |
2.10.57 | 21,902 | 9/24/2022 |
2.10.56 | 3,836 | 8/24/2022 |
2.10.55 | 13,532 | 6/24/2022 |
2.10.54 | 483 | 6/24/2022 |
2.10.53 | 495 | 6/23/2022 |
2.10.51 | 2,160 | 6/7/2022 |
2.10.50 | 578 | 6/7/2022 |
2.10.48 | 1,619 | 5/30/2022 |
2.10.46 | 500 | 5/30/2022 |
2.10.45 | 39,060 | 3/9/2022 |
2.10.44 | 20,642 | 12/8/2021 |
2.10.42 | 3,596 | 11/24/2021 |
2.10.41 | 6,873 | 11/23/2021 |
2.10.40 | 1,255 | 10/27/2021 |
2.10.39 | 2,133 | 10/1/2021 |
2.10.35 | 448 | 10/1/2021 |
2.10.25 | 472 | 10/1/2021 |
1.0.348 | 809 | 10/1/2021 |