#code #implementation #software #test


Contract testing validates the stability of a dependency's contract. There are two use-cases for such test:

as a client

Unit testing is easier when using test doubles, rather than actual integration tests. However, contracts might change. The contract testing is used to validate that the test-double's interface is consistent with the actual dependency contract. To be useful, the contract test must reproduce the same calls as to the test double.

as a producer

Guarantee service stability by validating that the contract offered to consumers is not changed.


Clean code: Contract testing allows separation of concern for testing code itself and consistency of dependencies, making the code cleaner.


Martin Fowler / Contract testref