mike-neckのブログ

Java or Groovy or Swift or Golang

GradleTestKitを使用する場合の注意点

GradleTestKitいいですね。

プラグイン作った場合は、もうこれなしには生きていけません。

ただ、いくつか問題があるようです。


デバッグは不可能

TestKitは別のプロセスでライブラリーやjarをロードするので、作成したプラグイン実装クラスなどにブレークポイントを設定してもスルーされます。

デーモンが起動されまくる

デーモンで起動されます。

それは別にどうでもいいのですが、テストが落ちたので若干実装クラスを修正してテストを再実行しても、同じエラーで落ちます。

これは、GradleRunnerがデーモン起動していて、そのデーモン内で以前のコンパイル結果をそのまま保持して使っているために、修正内容が反映されないためです。

これを回避するためにはデーモンを一度停止する必要があります。

具体的にはTestKitをテストに用いているテストではこんな感じで起動することになります。

$ gradle --daemon clean test
....
BUILD FAILED
...
...[落ちたので修正]...
$ gradle --daemon clean test
...
BUILD FAILE
...[同じ所で同じエラーで落ちる]...
...
$ gradle --stop #デーモンに残っているビルド結果を破棄する
Daemon stoped # コマンドラインから呼び出したデーモンが死ぬ
Daemon stoped # TestKitで起動したデーモンが死ぬ
$ gradle --daemon clean test #再度テストを実行

自分の作っているプラグインは自動でロードされない

これは以前にもなんかエントリー書いていますね。

mike-neck.hatenadiary.com

mike-neck.hatenadiary.com

後者の方法はそれなりにいい線いっているのですが、依存ライブラリーを解決できないので、これを含めて解決するプラグインを書いています。

mike-neck.hatenadiary.com

あと2~3日でプラグインポータルにあげるので、少々お待ちください。


おわり