Chapter 12. Spock and Spring

In this chapter, we dive into integration testing with the Spring application framework.

In the examples in this chapter, we use Spring Boot 1.4 and Spock 1.1, which include some new features that streamline integration testing. In particular, until Spock 1.1, mocking beans in the application context of an integration test was awkward.

What Do We Mean by “Integration Tests”?

In unit tests, the specification class deals with a unit of code in isolation. Collaborators are mocked or stubbed.

With integration tests, the entire application—or a subset of it—is started and the behavior of the system as a whole is tested. Integration tests typically deal with the larger-scale behavior exhibited by units of code working together.

Integration tests are also a useful way to protect against incorrect assumptions about the way units interact that might have been made in unit tests. For example, if a mock collaborator in a unit test does not behave the way the real collaborator does, the unit test might be incorrect, and without any kind of integration test, this would not be obvious until someone tries to use the application.

Container Tests

Container tests are similar to integration tests in that the application or some subset of it is started; however, their intent is a little different. Container tests focus on how units of code interact with the functionality of the container or framework in which they run. They ensure the framework features have been properly ...

Get Spock: Up and Running now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.