Pact JVM alternatives and similar libraries
Based on the "Testing" category.
Alternatively, view Pact JVM alternatives based on common mentions on social networks and blogs.
Mockito9.4 7.6 L4 Pact JVM VS MockitoMost popular Mocking framework for unit tests written in Java
JUnit9.2 0.0 L5 Pact JVM VS JUnitA programmer-oriented testing framework for Java.
Karate8.9 7.2 Pact JVM VS KarateTest Automation Made Simple
Apache JMeter8.9 9.7 L2 Pact JVM VS Apache JMeterApache JMeter open-source load testing tool for analyzing and measuring the performance of a variety of services
TestContainers8.8 9.2 L5 Pact JVM VS TestContainersTestcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
REST Assured8.8 6.0 L5 Pact JVM VS REST AssuredJava DSL for easy testing of REST services
WireMock8.6 5.1 L5 Pact JVM VS WireMockA tool for mocking HTTP services
Gatling8.6 9.6 Pact JVM VS GatlingModern Load Testing as Code
Cucumber8.4 9.4 L5 Pact JVM VS CucumberCucumber for the JVM
Moco8.3 6.8 L4 Pact JVM VS MocoEasy Setup Stub Server
PowerMock8.0 0.0 L1 Pact JVM VS PowerMockPowerMock is a Java framework that allows you to unit test code normally regarded as untestable.
Spock7.8 8.6 L4 Pact JVM VS SpockThe Enterprise-ready testing and specification framework.
TestNG7.7 9.1 L2 Pact JVM VS TestNGTestNG testing framework
Awaitility7.6 1.2 L5 Pact JVM VS AwaitilityAwaitility is a small Java DSL for synchronizing asynchronous operations
AssertJ7.4 8.6 L4 Pact JVM VS AssertJAssertJ is a library providing easy to use rich typed assertions
Truth7.2 7.1 L3 Pact JVM VS TruthFluent assertions for Java and Android
ArchUnit7.2 7.6 Pact JVM VS ArchUnitA Java architecture test library, to specify and assert architecture rules in plain Java
Selenide7.1 9.4 L5 Pact JVM VS SelenideConcise UI Tests with Java!
Hamcrest7.0 0.0 L5 Pact JVM VS HamcrestJava (and original) version of Hamcrest
PIT6.6 8.1 L4 Pact JVM VS PITState of the art mutation testing system for the JVM
Galen6.2 0.0 Pact JVM VS GalenLayout and functional testing framework for websites
Selenium5.7 0.0 L5 Pact JVM VS SeleniumPortable software testing framework for web applications.
JSONAssert5.6 5.5 L4 Pact JVM VS JSONAssertWrite JSON unit tests in less code. Great for testing REST interfaces.
JUnitParams5.6 0.0 Pact JVM VS JUnitParamsParameterised tests that don't suck
JFairy5.2 0.0 L5 Pact JVM VS JFairyJava fake data generator
JMockit5.1 0.0 L5 Pact JVM VS JMockitAdvanced Java library for integration testing, mocking, faking, and code coverage
GreenMail5.0 6.4 L3 Pact JVM VS GreenMailOfficial master for the Greenmail project
System Rules4.6 0.0 Pact JVM VS System RulesA collection of JUnit rules for testing code which uses java.lang.System.
Fixture Factory4.6 0.0 Pact JVM VS Fixture FactoryGenerator fake objects from a template
Citrus4.6 5.7 Pact JVM VS CitrusFramework for automated integration tests with focus on messaging integration
JGiven4.3 7.0 L4 Pact JVM VS JGivenBehavior-Driven Development in plain Java
Burst4.2 0.0 Pact JVM VS BurstA unit testing library for varying test data.
junit-dataprovider4.2 0.0 Pact JVM VS junit-dataproviderA TestNG like dataprovider runner for JUnit with many additional features
ConcurrentUnit4.1 0.0 L5 Pact JVM VS ConcurrentUnitToolkit for testing multi-threaded and asynchronous applications
Mutability Detector3.8 0.0 Pact JVM VS Mutability DetectorLightweight analysis tool for detecting mutability in Java classes
Lamdba Behave3.8 0.0 L5 Pact JVM VS Lamdba BehaveA modern testing and behavioural specification framework for Java 8
Jukito3.8 0.0 L4 Pact JVM VS JukitoThe combined power of JUnit, Guice and Mockito. Plus it sounds like a cool martial art.
ArquillianIntegration and functional testing platform for Java EE containers.
Hoverfly Java3.4 3.1 Pact JVM VS Hoverfly JavaJava binding for Hoverfly
JMock3.4 0.0 Pact JVM VS JMockAn expressive Mock Object library for Test Driven Development
Cukes-REST3.3 4.4 L4 Pact JVM VS Cukes-RESTCucumber DSL for testing RESTful Web Services
Randomized Testing3.3 6.6 Pact JVM VS Randomized TestingRandomized Testing (Core JUnit Runner, ANT, Maven)
Spectrum3.2 0.0 Pact JVM VS SpectrumA BDD-style test runner for Java 8. Inspired by Jasmine, RSpec, and Cucumber.
RabbitMQ-mock3.2 0.0 Pact JVM VS RabbitMQ-mockMock for RabbitMQ Java amqp-client
Scott Test Reporter3.0 0.0 L4 Pact JVM VS Scott Test ReporterNever debug a test again: Detailed failure reports and hassle free assertions for Java tests - Power Asserts for Java
beanmother2.9 0.0 Pact JVM VS beanmotherA library for setting up Java objects as test data.
pojo-tester2.8 0.0 L5 Pact JVM VS pojo-testerJava testing framework for testing pojo methods. It tests equals, hashCode, toString, getters, setters, constructors and whatever you report in issues ;)
YAKS2.7 10.0 Pact JVM VS YAKSYAKS is a platform to enable Cloud Native BDD testing on Kubernetes
raml-tester2.7 0.0 L5 Pact JVM VS raml-testerTest if a request/response matches a given raml definition
ONLYOFFICE Docs — document collaboration in your environment
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Pact JVM or a related project?
JVM implementation of the consumer driven contract library pact.
From the Ruby Pact website:
Define a pact between service consumers and providers, enabling "consumer driven contract" testing.
Pact provides an RSpec DSL for service consumers to define the HTTP requests they will make to a service provider and the HTTP responses they expect back. These expectations are used in the consumers specs to provide a mock service provider. The interactions are recorded, and played back in the service provider specs to ensure the service provider actually does provide the response the consumer expects.
This allows testing of both sides of an integration point using fast unit tests.
This gem is inspired by the concept of "Consumer driven contracts". See https://martinfowler.com/articles/consumerDrivenContracts.html for more information.
Read Getting started with Pact for more information on how to get going.
- Twitter: @pact_up
- Slack: Join the chat at https://slack.pact.io/
- Stack Overflow: https://stackoverflow.com/questions/tagged/pact
- For examples of using pact-jvm with spring boot, have a look at https://github.com/Mikuu/Pact-JVM-Example and https://github.com/mstine/microservices-pact
Tutorial (60 minutes)
Learn everything in Pact in 60 minutes: https://github.com/pact-foundation/pact-workshop-jvm-spring.
The workshop takes you through all of the key concepts of consumer and provider testing using a Spring boot application.
Additional documentation can be found at docs.pact.io, in the Pact Wiki, and in the Pact-JVM wiki. Stack Overflow is also a good source of help, as is the Slack workspace.
Supported JDK and specification versions:
|Branch||Specification||JDK||Kotlin Version||Latest Version||Notes|
|4.4.x master||V4 + plugins||11+||1.6.21||4.4.0|
Previous versions (not actively supported)
|Branch||Specification||JDK||Kotlin Version||Scala Versions||Latest Version|
|4.2.x||V4 (1)||11-15 (2)||1.4.32||N/A||4.2.21|
- 1: V4 specification support is only partially implemented with 4.2.x
- 2: v4.2.x may run on JDK 16, but the build for it does not.
NOTE: The JARs produced by this project have changed with 4.1.x to better align with Java 9 JPMS. The artefacts are now:
au.com.dius.pact:consumer au.com.dius.pact.consumer:groovy au.com.dius.pact.consumer:junit au.com.dius.pact.consumer:junit5 au.com.dius.pact.consumer:java8 au.com.dius.pact.consumer:specs2_2.13 au.com.dius.pact:pact-jvm-server au.com.dius.pact:provider au.com.dius.pact.provider:scalatest_2.13 au.com.dius.pact.provider:spring au.com.dius.pact.provider:maven au.com.dius.pact:provider au.com.dius.pact.provider:junit au.com.dius.pact.provider:junit5 au.com.dius.pact.provider:scalasupport_2.13 au.com.dius.pact.provider:lein au.com.dius.pact.provider:gradle au.com.dius.pact.provider:specs2_2.13 au.com.dius.pact.provider:junit5spring au.com.dius.pact.core:support au.com.dius.pact.core:model au.com.dius.pact.core:matchers au.com.dius.pact.core:pactbroker
Pact-JVM has a number of ways you can write your service consumer tests.
I Use Scala
You want to look at: pact4s or scala-pact
I Use Java
You want to look at: [junit](consumer/junit) for JUnit 4 tests and [junit5](consumer/junit5) for JUnit 5 tests. Also, if you are using Java 11 or above, there is an updated DSL for consumer tests.
NOTE: If you are using Java 8, there is no separate Java 8 support library anymore, see the above library.
I Use Groovy or Grails
You want to look at: [groovy](consumer/groovy) or [junit](consumer/junit)
(Use Clojure I)
Clojure can call out to Java, so have a look at [junit](consumer/junit). For an example look at example_clojure_consumer_pact_test.clj.
I Use some other jvm language or test framework
You want to look at: [Consumer](consumer)
My Consumer interacts with a Message Queue
As part of the V3 pact specification, we have defined a new pact file for interactions with message queues. For an implementation of a Groovy consumer test with a message pact, have a look at PactMessageBuilderSpec.groovy.
Once you have run your consumer tests, you will have generated some Pact files. You can then verify your service providers with these files.
I am writing a provider and want to ...
verify pacts with SBT
You want to look at: pact4s or scala-pact
verify pacts with Gradle
You want to look at: [pact gradle plugin](provider/gradle)
verify pacts with Maven
You want to look at: [pact maven plugin](provider/maven)
verify pacts with JUnit tests
You want to look at: [junit provider support](provider/junit) for JUnit 4 tests and [junit5](provider/junit5) for JUnit 5 tests
verify pacts with Leiningen
You want to look at: [pact leiningen plugin](provider/lein)
verify pacts with a Spring MVC project
Have a look at [spring](provider/spring) or Spring MVC Pact Test Runner (Not maintained).
I want to verify pacts but don't want to use sbt or gradle or leiningen
You want to look at: [provider](provider)
verify interactions with a message queue
As part of the V3 pact specification, we have defined a new pact file for interactions with message queues. The Gradle pact plugin supports a mechanism where you can verify V3 message pacts, have a look at [pact gradle plugin](provider/gradle#verifying-a-message-provider). The JUnit pact library also supports verification of V3 message pacts, have a look at [junit](provider/junit#verifying-a-message-provider).
I Use Ruby or Go or something else
The pact-jvm libraries are pure jvm technologies and do not have any native dependencies.
However, if you have a ruby provider, the json produced by this library is compatible with the ruby pact library. You'll want to look at: Ruby Pact.
For .Net, there is Pact-net.
For JS, there is Pact-JS.
For Go, there is Pact-go.
For Rust, there is Pact-Rust.
Have a look at implementations in other languages.
I Use something completely different
There's a limit to how much we can help, however check out [pact-jvm-server](pact-jvm-server)
How do I transport my pacts from consumers to providers?
You want to look at: Pact Broker
Which is a project that aims at providing tooling to coordinate pact generation and delivery between projects.
I want to contribute
Documentation for contributors is here.
We are tracking anonymous analytics to gather important usage statistics like JVM version and operating system. To disable tracking, set the 'pact_do_not_track' system property or environment variable to 'true'.