JUnitのCategoryテストっぽいことを@Categoryを使わずにできたので共有します
どうやってやるか
gradleスクリプトに以下のようなカスタムタスクを作ります。これだけ。
// targetパッケージだけをテスト対象にしたカスタムタスク
task customTest(type: Test, dependsOn: testClasses) {
include '**/target/**'
}
この例ではパッケージ名にtargetと含まれるテストだけを含めていますが、excludeを使って除外したり、複数行で記述することも可能です。
あとは ./gradlew test
と実行していたところを./gradlew customTest
にするだけでOKです。
メリット
カテゴリの切り方を柔軟にできるのがこの方法の良いところだと思います。
元々Jenkinsで動かしているテストが遅くなって来たので分離して実行したいという背景からカテゴリ分けに取り組みましたので、既存のテストコードに@Categoryはついていませんでした。
テストが遅くなったと感じた時にはテストケースも膨大。
@Categoryをつけていくのも面倒ですので、つけない方法を探すとこの方法にたどり着きました。
この方法だと、今後さらに分割したいとかにも対応できるのもいいですね。
その他の方法
検討した他のカテゴリ分け方法も紹介しておきます
(1) --testsを使う
頻繁に実行しないのであればこれが楽ですね。@Categoryもいらないです。
詳しくはリンク先を。
Gradleで特定のメソッド、クラスのみテスト
(2) @Category使う
JunitのCategoryを使う場合はこのあたりが参考になるかと思います。
JUnitのCategoryさんとMavenのintegration-testでの実行
gradleでJUnitのCategoryテストを実行する - 2014年版