Edited at

Gradle で Integration Test

More than 1 year has passed since last update.

自動化されたテストにデータベースなどが絡んでいると、実行に時間がかかるようになってしまいます。単体テストと結合テストに分けて、単体テストを気軽に実行できるようにしておきましょう。毎回結合された状態でテストできる方がテストの精度が上がりそうですが、時間がかかってテストを行わなくなると本末転倒です。

Gradle を使う場合は、 https://www.petrikainulainen.net/programming/gradle/getting-started-with-gradle-integration-testing/ の記事が良かったので結論だけメモしておきます。

sourceSets {

integrationTest {
java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
srcDir file('src/integration-test/java')
}
resources.srcDir file('src/integration-test/resources')
}
}

configurations {
integrationTestCompile.extendsFrom testCompile
integrationTestRuntime.extendsFrom testRuntime
}

task integrationTest(type: Test) {
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
outputs.upToDateWhen { false }
}

単体テストと同様に書いて、 src/integration-test/java に配置し、 gradle integrationTest で実行します。 integrationTest のみで利用するライブラリは、 dependenciesintegrationTestCompile で指定します。