Skip to content


Spock extension for Testcontainers library, which allows to use Docker containers inside of Spock tests.


@Testcontainers class-annotation

Specifying the @Testcontainers annotation will instruct Spock to start and stop all testcontainers accordingly. This annotation can be mixed with Spock's @Shared annotation to indicate, that containers shouldn't be restarted between tests.

class DatabaseTest extends Specification {

    PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer()

    def "database is accessible"() {

        given: "a jdbc connection"
        HikariConfig hikariConfig = new HikariConfig()
        HikariDataSource ds = new HikariDataSource(hikariConfig)

        when: "querying the database"
        Statement statement = ds.getConnection().createStatement()
        statement.execute("SELECT 1")
        ResultSet resultSet = statement.getResultSet()

        then: "result is returned"
        int resultSetInt = resultSet.getInt(1)
        resultSetInt == 1

Adding Testcontainers Spock support to your project dependencies

Add the following dependency to your pom.xml/build.gradle file:

testCompile "org.testcontainers:spock:1.10.6"


The initial version of this project was heavily inspired by the excellent JUnit5 docker extension by FaustXVI.