GradleのテストがUP-TO-DATEの場合の再テスト実行方法とcleanについて

前回のように、調整でGradleの test タスク実行を繰り返していると、変更がない場合 UP-TO-DATE となって実行されない。

gradle clean test ではコンパイルからやり直しだし、いちいちテストを変更して再実行するのも面倒。手軽にテストを再実行する方法を調べたのでメモ。

環境

Groovy v3.0.3, Gradle v6.3。

--rerun-tasks

Command-Line Interface

--rerun-tasks を付与して実行すると、各タスクがUP-TO-DATEチェックを無視して強制実行される。

ただし、指定したタスクだけでなく依存タスクまで再実行されるため、 gradle test --rerun-tasks ではcleanした場合と変わらず、コンパイルなどから再実行される。

cleanTest

The Java Plugin を見ると、 clean${TaskName} とタスク名を指定することで、指定したタスクの成果物のみ削除することができる模様。

gradle cleanTest test とすると、 compileJava などはUP-TO-DATEのまま、test のみ再実行された。

自作タスクのclean

前回作った fastTest タスクを再実行する場合、 gradle cleanFastTest fastTest となる。

試しに gradle fastTest してから gradle cleanTest fastTest したところ、 fastTest はUP-TO-DATEで実行されなかった。

振り返り

Mavenでは mvn test するとテスト実行は必ず行われていたように思う。

コンパイルはともかく、テストの実行はスキップしてほしくないので、やっぱりGradleよりMavenのほうが好きだな...

備考

UP-TO-DATEとなる条件を定義することもできる模様。

ryozi.hatenadiary.jp