LoginSignup
10
12

More than 5 years have passed since last update.

Gradleのカスタムタスクで、JUnitテストのカテゴリ分けをする

Posted at

JUnitのCategoryテストっぽいことを@Categoryを使わずにできたので共有します

どうやってやるか

gradleスクリプトに以下のようなカスタムタスクを作ります。これだけ。

build.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年版

10
12
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
12