Announcing the WireMock and AtomicJar partnership on Testcontainers
Announcing the partnership
We are happy to announce our new partnership with AtomicJar on the Testcontainers ecosystem! AtomicJar is founded by the same team that maintains the most popular integration testing library, Testcontainers. This partnership expands WireMock’s ecosystem to additional tech stacks, while providing a great end-to-end developer experience for integration testing of components at all stages - from initial design to post-deployment health checks.
“When I started WireMock OSS, it was implemented as a Java library allowing standalone WireMock instances or embedding into Java tests. WireMock has been a huge success thanks to its rich matching and request templating capabilities, support for stateful behaviour and scenarios, and record-and-playback capabilities. It got adopted and partially implemented in many other technology stacks. ” - said Tom Akehurst, the WireMock OSS creator and the WireMock company CTO - “The Testcontainers technology and the official images allow us to bring the full power of WireMock’s Java implementation and WireMock Cloud to many technology stacks”.
Testcontainers is an open source framework for providing throwaway, lightweight instances of databases, message brokers, web browsers, or just about anything that can run in a Docker container. With Testcontainers you can define your test dependencies as code, then simply run your tests and containers will be created and then deleted. It has a rich modules ecosystem to extend integrations with different services and provide additional configuration, observability and assertion APIs. The WireMock module can run with Testcontainers, and also with Testcontainers Desktop and Testcontainers Cloud from AtomicJar.
"Self-contained tests are important for faster development and iteration. Developers love the flexibility of Testcontainers and WireMock to create effective tests that mock output from external APIs." - said Eli Aleyner, a co-founder of AtomicJar - "We are thrilled to welcome WireMock to the Official Module program for Testcontainers and partner with WireMock for the benefit of the community"
As part of this partnership we’ve created WireMock modules for 3 official Testcontainers implementations: Java, Golang and Python. We have also created an experimental implementation of Testcontainers for C/C++ to address demands of our clients and community members who operate in the Automotive/Embedded space. Stay tuned for more releases!
We are looking forward to working closely with the AtomicJar team, as well as the WireMock and Testcontainers communities, on building stronger interoperability, integrations and developer experience for those who use the open source projects and our products.
Benefits of using Testcontainers and WireMock
- Reduce toolchain complexity: Containers and the Testcontainers framework(s) are an excellent solution to resolving toolchain complexity and environment reproduction problems by packaging the environment of a component-under-test into containers and letting the services connect via their APIs.
- Flexible integration testing: Testcontainers are viable for integration testing running on different architectures and modern operating systems, in fact everywhere Docker can run. In your tests, you can use Tstcontainers to provision a temporary container or a subsystem that can be used for a single test, or reused in multiple test cases and test suites. Testcontainers offer useful SDKs for the popular technology stacks and test frameworks, and it makes it one of the most popular tools among developers.
- Multi-language support: Testcontainers has multiple implementations for Java, Golang, .NET, Node.js, Python, Rust, Haskell, Ruby, and now C/C++. By leveraging the WireMock for Docker official images we can deploy WireMock and provide all functionality of the flagman WireMock Java implementations for all these platforms, regardless of whether there is a native WireMock port available for these technology stacks.
Official WireMock modules
As a part of the technical partnership with AtomicJar, we have successfully passed the audit of three module implementations: for Java, Golang and Python. We updated the modules to comply with the best practices for Testcontainer modules, and achieved the status of the official module.
You can now find WireMock on the Testcontainers module site:
All modules provide SDKs that allow users to provision WireMock instances in just a fraction of seconds, and configure them -as-code or using the REST API. The modules also provide good developer experience for sending requests to the Mock service, retrieving access logs and observability data, and implementing asserts for the expected API client behaviour. The WireMock images can include extensions so that you can access all WireMock features, including the gRPC and GraphQL available as extensions.
You can learn more about the modules here:
- Module for Testcontainers Java: Documentation, Overview video
- Module for Testcontainers Python: Introduction and Getting Started
- Module for Testcontainers Go: Announcement Blog
We will continue working together with AtomicJar on improving the modules and releasing the 1.0.0 versions of all modules after the official announcement of WireMock 3 in a few weeks (stay tuned!) and aligning the APIs and features of the modules with the new release. We also have prototypes of the WireMock modules for Testcontainers Rust and Testcontainers for C/C++, and we are looking forward to publishing more about them soon.
Learn more!
In early October 2023, I participated in Devoxx Belgium and spoke on API Integration testing together with Oleg Šelajev, a head of DevRel at AtomicJar. During this talk we discussed the stories of developers working with complex APIs, and discussed how WireMock and Testcontainers could help to shift left your integration tests and remove the slowdown caused by service dependencies. Yoiu can find the recording if this talk here.
If you want to learn more about WireMock on Testcontainers, WireMock in general, WireMock and Testcontainers in CI/CD pipelines like Jenkins or GitHub Actions, or the new Testcontainers for C/C++ project, ping me on the WireMock Community Slack!
Also, see the announcement by AtomicJar in their blogpost.
-------------------------------
About WireMock. WireMock is a popular open-source tool for API simulations (aka API mocking). It is used for integration testing of applications, especially via REST API. Started in 2011 as a Java library by Tom Akehurst, it now spans multiple programming languages and technology stacks. WireMock helps to create stable test and development environments, isolate code from flakey 3rd parties and simulate APIs that aren’t currently available. It can run as a test library, as a standalone server or via the WireMock Cloud service. With more than 300 contributors, 50+ integrations and 5+ million downloads a month, it is one of the most popular open source projects in its domain.
About Testcontainers. Testcontainers is an open source framework for providing throwaway, lightweight instances of databases, message brokers, web browsers, or just about anything that can run in a Docker container. With Testcontainers you can define your test dependencies as code, then simply run your tests and containers will be created and then deleted. It has a rich modules ecosystem that extend integrations with different services and provide additional configuration, observability and assertion APIs. Read More
About WireMock, Inc. WireMock Inc. is building software to unlock developer productivity by enabling collaborative API design, mocking APIs and eliminating slowdowns caused by external dependencies. The company was started in 2022 by Tom Akehurst and Uri Maoz becoming its CEO and CTO. WireMock Cloud, the company’s flagship product, is built on top of the WireMock open source project stewarded by the company.
About AtomicJar Inc. AtomicJar is a company on a mission to make integration testing easier for developers across the software development lifecycle. Founded by the same team that maintains the most popular integration testing library, Testcontainers, AtomicJar is giving developers simpler methods for testing with containers and anything running inside containers, against the many dependencies code integrates with in production. For more information visit https://atomicjar.com or follow https://twitter.com/AtomicJarInc.
/