Gradle Integration Testing Plugin

There are plugin that allow to configure integration tests same way as unit tests in simple way

Quick Start

To add itest plugin to your project it will require to add next code to the build.gradle

plugins { id 'com.softeq.gradle.itest' version '1.0.4' }

Or with Kotlin

plugins { id ( "com.softeq.gradle.itest" ) version "1.0.4" }

After that you will have possibilities to write tests to the itest/ folder.

To run the tests you just need to execute in your project

./gradlew clean build

Documentation

Content:

Source Set

There are by default application add new source set to the project with name itest . To change name of the source set it is possible to use name configuration parameter. In this case location of integration test sources will be at folder with specified name.

With Groovy / Kotlin

itestSourceSet { name = "integrationTest" }

Also there are possible to customize compile classpath and runtime classpath of the source set

Groovy

itestSourceSet { name = "integrationTest" compileClasspath = sourceSets . main . compileClasspath runtimeClasspath = sourceSets . main . runtimeClasspath }

Kotlin

itestSourceSet { name = "integrationTest" compileClasspath = sourceSets [ "main" ]. compileClasspath runtimeClasspath = sourceSets [ "main" ]. runtimeClasspath }

Integration Test Task

Current plugin also configure task integrationTest that extends standard Test task of the Gradle. Configuration parameters for this task you may find there

JUnit 5

To add support of JUnit 5 you will require to specify at configuration task

Groovy

integrationTask { useJUnitPlatform () }

Kotlin

tasks . withType < Test > { useJUnitPlatform () }

TestNG

To use TestNG for integration testing of you application it will require to specify next configuration for the integrationTest task

Groovy

integrationTest { useTestNG () }

Kotlin

tasks . withType < Test > { useTestNG () }

Spock

To use Spock framework with the plugin it will require just to add the Spock dependencies

Groovy / Kotlin

dependencies { itestImplementation ( "org.spockframework:spock-core:1.3-groovy-2.5" ) }

Dependencies Management

There are possible to specify additional dependencies for the integration test classes

Standard Configuration itest Configuration Description implementation itestImplementation Implementation dependencies scope compileOnly itestCompileOnly Compile Only dependencies scope runtimeOnly itestRuntimeOnly Runtime Only dependencies scope

You can specify this dependencies in the dependencies section of the build.gradle file

Groovy

dependencies { itestRuntimeOnly 'com.h2database:h2:1.0.60' }

Kotlin

dependencies { itestRuntimeOnly ( "com.h2database:h2:1.0.60" ) }

Skip Tests

To skip integration tests you need to provide -PdisableIntegrationTests option to the gradle.

For instance

gradlew clean build -PdisableIntegrationTests

Alternative options to disable integration and unit tests you can find below

gradlew clena build -x test -x integrationTest

Configurable Parameters

There are table with available plugin configuration parameters

Param Parent Configuration Default Value Description name itestSourceSet “itest” There are name of the folder with integration test sources compileClasspath itestSourceSet Main SourceSet output and classpath There are classpath of the compiler to build integration tests runtimeClasspath itestSourceSet Main SourceSet output and runtime classpath There are runtime classpath that will be used during integration tests evaluation Gradle Test Params integrationTest - There are standard Gradle Test task configuration useJUnitPlatform() integrationTest - There are option to enable JUnit 5 tests execution useTestNG() integrationTest - There are option to enable TestNG evaluation support

License

MIT