Spring Cloud Contract
Consumer-driven contract testing for the Spring ecosystem — generates stubs and verifies producer compliance.
Pricing
Free / Open source
Type
Automation
Languages
Java, Kotlin
// VERDICT
Reach for Spring Cloud Contract when you're a Spring shop wanting contract testing native to the Spring ecosystem and build. Skip it when your stack is polyglot or you prefer Pact's consumer-driven, language-agnostic model.
Best for
Contract testing for Spring/JVM services, generating tests and stubs from contracts defined in the provider's build.
Avoid when
Your services aren't Spring/JVM, or you want a polyglot consumer-driven approach.
CI/CD fit
Maven · Gradle · Jenkins · GitHub Actions · Spring ecosystem
Languages
Java · Kotlin
Team fit
Spring/JVM teams · Microservices teams on the JVM · Backend SDET teams
Setup
Maintenance
Learning
Licence
// BEST FOR
- Contract testing for services already built with Spring and the JVM
- Generating provider tests and consumer stubs from defined contracts
- Keeping contracts close to the provider code and build lifecycle
- Producing stub jars consumers can run against
- Integrating naturally with Maven/Gradle and Spring Boot tests
- JVM microservices teams standardised on Spring
// AVOID WHEN
- Your services aren't Spring or JVM-based
- You want a polyglot, consumer-driven model (Pact fits)
- A non-Spring team would fight the ecosystem assumptions
- You have a single service with no contracts to verify
- You want functional/end-to-end API testing instead
- The Spring/Groovy/YAML contract DSL doesn't suit the team
// QUICK START
# Add the Spring Cloud Contract plugin to the provider's build, define contracts, then:
mvn test// ALTERNATIVES TO CONSIDER
| Tool | Choose it when |
|---|---|
| Pact | You want polyglot, consumer-driven contract testing across non-JVM services. |
| WireMock | You want to stub services rather than formally verify contracts (it underpins SCC's stubs). |
| REST Assured | You want functional Java API tests rather than contract testing. |
// MIGRATION NOTES
PactSpring Cloud Contract
Both do contract testing; Spring Cloud Contract is provider-driven and Spring-native, where Pact is consumer-driven and polyglot. Migrating suits teams consolidating on Spring - move contracts into the provider build and publish stub jars, pair by pair.
// FEATURES
- Groovy DSL, YAML, or Kotlin contract definitions
- Stub Runner for consumer-side WireMock stubs
- Auto-generates producer verification tests
- Tight Spring Boot integration
- Maven and Gradle plugins
- Messaging contracts in addition to HTTP
// PROS
- First-class Spring Boot integration
- Producer tests generated automatically
- Supports messaging (Kafka, RabbitMQ) contracts
// CONS
- JVM-only — pair with Pact for polyglot ecosystems
- Steep ramp-up for teams new to Spring
- Stub artifacts add complexity to dependency graphs
// EXAMPLE QA WORKFLOW
Add the plugin to the provider's Maven/Gradle build
Define contracts in Groovy or YAML
Let the framework generate provider tests and stub jars
Publish stub jars to your artifact repository
Have consumers test against the published stubs
Run contract verification in the provider's CI build
// RELATED QA.CODES RESOURCES
Cheat sheets
Glossary
Practice
Interview