Skip to content

Releases: testcontainers/testcontainers-dotnet

4.8.1

23 Oct 04:55
2e32476

Choose a tag to compare

What's Changed

🐛 Bug Fixes

4.8.0

19 Oct 14:36
1cfac50

Choose a tag to compare

What's Changed

Thank you to all the contributors 🙌.

In version 4.7.0, we noticed that the reuse hash could change depending on the order of dictionary values. This has been fixed to ensure that dictionary values are processed in a consistent order when generating the reuse hash. As a result, the reuse hash will likely change again with 4.8.0.

Wait strategies now default to the Running mode. This mode expects the container to remain running throughout startup. If the container exits unexpectedly, Testcontainers will throw a ContainerNotRunningException that includes the exit code and container logs.

The container startup callback now includes an additional overload that provides the actual container configuration. If you implement IContainerBuilder<TBuilderEntity, TContainerEntity>, you need to add the container configuration (e.g., IContainerConfiguration) as a third generic type constraint to IContainerBuilder.

IContainerBuilder.WithResourceMapping and IContainer.CopyAsync now include two new optional arguments: uid and gid. If you do not need to specify those, use named arguments for the existing parameters: fileMode or ct.

⚠️ Breaking Changes

🚀 Features

🐛 Bug Fixes

📖 Documentation

  • docs: Remove obsolete UntilOperationIsSucceeded wait strategy example (#1551) @ascott18
  • docs: Fix link to Ryuk in IContainerBuilder.WithAutoRemove code comment (#1546) @hojmark

🧹 Housekeeping

4.7.0

28 Aug 09:52
b0b0cbc

Choose a tag to compare

What's Changed

This release doesn't introduce breaking changes to the public API, but it isn't binary compatible due to necessary internal changes. Make sure to update all related packages (Testcontainers modules) to the same version. See more details here. Thanks to all contributors 👏.

⚠️ Breaking Changes

🚀 Features

🐛 Bug Fixes

📖 Documentation

🧹 Housekeeping

4.6.0

13 Jun 06:33
5209f13

Choose a tag to compare

What's Changed

This is a patch release (but the minor version was already set). It fixes a bug in our Docker.DotNet fork where a wrong HTTP Connection header break Podman and possibly other environments. Shipped a quick fix. Thanks again to @ahaeber and @victor-lambret for the help.

🐛 Bug Fixes

🧹 Housekeeping

4.5.0

05 Jun 15:59
b1244cc

Choose a tag to compare

What's Changed

Big thanks to everyone who contributed to this release 🤜🤛.

🚀 Features

🐛 Bug Fixes

📖 Documentation

🧹 Housekeeping

4.4.0

14 Apr 17:08
2162c44

Choose a tag to compare

What's Changed

Time for a new release! Big thanks to everyone who helped out with this one. It's got some awesome new features and fixes 😎. Seriously, I can't thank you enough. This wouldn't be possible without your ongoing support 🙏.

🚀 Features

🐛 Bug Fixes

  • fix(Pulsar): Set memory limits (#1420) @HofmeisterAn
  • fix: Add Docker Hub image name prefix to image builder API WithName(IImage) (#1413) @HofmeisterAn
  • fix: Reflect Unix file mode when building tarball from .NET 7 onwards (#1397) @kfarnung
  • fix: Retrieve logs since CreatedTime for UntilMessageIsLogged wait strategy (#1384) @0xced

📖 Documentation

🧹 Housekeeping

4.3.0

24 Feb 15:56
b53e4f2

Choose a tag to compare

What's Changed

Thank you to all the contributors 🙌.

🚀 Features

🐛 Bug Fixes

🧹 Housekeeping

4.2.0

10 Feb 19:59
c56c495

Choose a tag to compare

What's Changed

Thanks for all the contributions. Great first release of the year ❤️.

🚀 Features

🐛 Bug Fixes

  • fix(Redpanda): Add missing command-line arguments to the startup script (smp, memory) (#1364) @RobotechUSA
  • chore: Remove binding of ports to IPv4 only (#1363) @daviian
  • feat: Add network support to the Kafka container (#1316) @SebastienDegodez
  • fix: Load PKCS#12 correctly for mTLS on Windows in .NET 9 (#1320) @jvmdc

🧹 Housekeeping

4.1.0

09 Dec 19:38
0d86bda

Choose a tag to compare

What's Changed

This is likely the last release for this year, unless urgent fixes become necessary.

I want to mention a change introduced in the last major release, where we refactored the IImage interface. As part of this update, we removed obsolete properties and overloaded constructors. If you previously used an overload other than DockerImage(string), please ensure you pass the correct values to the constructor.

Additionally, we replaced Docker.DotNet with our own fork to keep the Docker Engine API up to date. Our goal is to improve reliability and performance while offering a more developer-friendly and convenient client. If you depend on a Docker client for .NET, we encourage you to contribute to this project ❤️.

On a personal note, I wish everyone a peaceful and lovely holiday season. Take this time to rest, connect with loved ones, and recharge for the new year. Take care.

🚀 Features

🐛 Bug Fixes

  • fix: Postpone exception in DbContainerFixture to match the behavior of ContainerFixture (#1310) @0xced
  • fix: Do not pre-pull scratch image (#1304) @HofmeisterAn
  • fix: Add HTTP wait strategy to prevent race-condition in WaitUntilHttpRequestIsSucceededTest (#1299) @HofmeisterAn
  • fix: Add HTTP wait strategy to prevent race-condition in TarOutputMemoryStreamTest (#1297) @HofmeisterAn
  • fix: Prepend Docker Hub namespace to repository (#1287) @HofmeisterAn

📖 Documentation

🧹 Housekeeping

4.0.0

01 Nov 09:16
1a78654

Choose a tag to compare

What's Changed

Thanks so much for all the effort you put into this release 🙌. We are continuing to align Testcontainers for .NET with other language implementations and working on improving the domain-specific language.

We have updated the IImage interface to follow the domain-specific language with the correct property names. The table below shows the changes. We tried to make the transition as smooth as possible, but be aware that relying on the Repository property might cause issues since it now resolves a different value than before. We have kept the old properties, marked them as obsolete, and provided guidance on how to migrate.

Actual Expected (New)
Registry - myregistryhost:5000
Repository myregistryhost:5000/fedora fedora/httpd
Name httpd -
Tag version1.0 version1.0
Digest - sha256:37a3b014d320...
GetHostname() myregistryhost:5000 myregistryhost:5000

⚠️ Breaking Changes

🚀 Features

  • feat: Use exec to replace current shell with the Kafka process (as ENTRYPOINT) (#1282) @jasoncouture
  • feat: Add getter for Azurite blob, queue and table endpoint (#1278) @pregress
  • feat: Reintroduce Papercut module (#1268) @TechLiam
  • feat: Add Neo4j Enterprise Edition support (WithEnterpriseEdition(bool)) (#1269) @Sossenbinder
  • feat: Support digest in IImage, DockerImage and in the WithImage(string) implementation (#1249) @Kielek
  • feat: Align IImage properties with Docker DSL (#1256) @HofmeisterAn
  • feat: Change visibility of AccountName and AccountKey to public, move to AzuriteBuilder (#1258) @mikecole
  • feat: Get Docker endpoint from Docker context (#1235) @0xced

🐛 Bug Fixes

  • fix: Bump MSSQL image version, remove Azure SQL Edge and Papercut module (#1265) @HofmeisterAn
  • fix: Throw exception if Docker resource does not exist instead of silently ignoring it (#1254) @0xced

🧹 Housekeeping