私はカスタムGradleプラグインを作成しています。私は、プラグインで作成したいすべての機能のテストを書いています。 私はプラグインを書くためにjavaを使用しています。Gradleプラグインを書くときにafterEvaluateをテストするには
プラグインインタフェースから継承したapply
メソッドでタスクを作成します。
プロジェクトのビルドライフサイクルのafterEvaluate段階で利用可能なタスクには多くの依存関係がありますが、遅かれ早かれ(少なくともapply
ではありません)、これらの外部タスクが定義される。
だから私は、私はJUnitのとGradleの検査キットを使用して、次のセットアップを持っているテストコードで
project.afterEvaluate((project) -> {
customTask.dependsOn(project.getTasks().getByName("nameOfTheTask"));
});
を使用してこれらのタスクの依存関係を定義します。
@BeforeClass
public static void initializeProject() {
project = ProjectBuilder.builder().build();
customPlugin = new CustomPlugin();
customPlugin.apply(project);
}
私は(定期的に確認することができますつまり、afterEvaluateブロックの外側で)テストケースの依存関係を使用して自分のタスクを取得します。
project.getTasks().findByName("customTask").getDependsOn()
ただし、これは特定のライフサイクルまたはより一般的にはクロージャとして定義された依存関係に対しては不可能です。
特定のライフサイクルに対して正しい依存関係が設定されているかどうかをテストする方法はありますか?あるいは、そのようなコードブロックを登録したものを取り出す方法はありますか?
P.S.私はキャスティング、反射、シャドーイング、修正などを使うことができましたが、これがテスト可能かどうか聞いてみたいと思います。ありがとう!