自動化されたテストにデータベースなどが絡んでいると、実行に時間がかかるようになってしまいます。単体テストと結合テストに分けて、単体テストを気軽に実行できるようにしておきましょう。毎回結合された状態でテストできる方がテストの精度が上がりそうですが、時間がかかってテストを行わなくなると本末転倒です。
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 のみで利用するライブラリは、 dependencies
に integrationTestCompile
で指定します。