(ほとんど) 動作するプラグインを開発しましたが、その機能は処理するプロジェクトに直接関係しているため、プラグインの単体テストと統合テストをどのように開発しますか? 私が持っていた最良のアイデアは、プラグインのライフサイクル中にプラグインを使用し、プラグインのデータ処理の成功または失敗を報告するテストを持つプラグインの統合テスト プロジェクトを作成することです。
より良いアイデアを持っている人はいますか?
(ほとんど) 動作するプラグインを開発しましたが、その機能は処理するプロジェクトに直接関係しているため、プラグインの単体テストと統合テストをどのように開発しますか? 私が持っていた最良のアイデアは、プラグインのライフサイクル中にプラグインを使用し、プラグインのデータ処理の成功または失敗を報告するテストを持つプラグインの統合テスト プロジェクトを作成することです。
より良いアイデアを持っている人はいますか?
maven-plugin-testing-harnessを使用する必要があります。
<依存関係>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-plugin-testing-harness</artifactId>
<バージョン>1.1</バージョン>
<scope>テスト</scope>
</依存>
AbstractMojoTestCaseから単体テスト クラスを派生させます。
src/test/resources通常はフォルダー内に、必要最小限の POM を作成する必要があります。
<プロジェクト>
<ビルド>
<プラグイン>
<プラグイン>
<groupId>com.mydomain,mytools</groupId>
<artifactId>mytool-maven-plugin</artifactId>
<構成>
<!-- ここに構成設定を挿入 -->
</設定>
<実行>
<実行>
<目標>
<goal>私の目標</goal>
</目標>
</実行>
</実行>
</プラグイン>
</プラグイン>
</ビルド>
</プロジェクト>
AbstractMojoTest.lookupMojo(String,File) (または他のバリエーションの 1 つ) を使用して、特定の目標のために Mojo をロードして実行します。
最終ファイル testPom = new File(PlexusTestCase.getBasedir(), "/target/test-classes/mytools-plugin-config.xml");
Mojo mojo = this.lookupMojo("mygoal", testPom);
// アサーションを挿入して、プラグインが正しく初期化されたことを検証します
mojo.execute();
// アサーションを挿入して、プラグインが期待どおりに動作したことを検証します
説明のために参照できる独自のプラグインを作成しましたhttp://ldap-plugin.btmatthews.com、
実際の例を見たい場合は、Terracotta Maven プラグイン (tc-maven-plugin) にいくつかのテストがあり、オープン ソースのフォージで閲覧できます。
プラグインはhttp://forge.terracotta.org/releases/projects/tc-maven-plugin/にあります。
ソースは svn にあります: http://svn.terracotta.org/svn/forge/projects/tc-maven-plugin/trunk/
そして、そのソースには、実際の Maven プラグイン テストが src/test/java/org/terracotta/maven/plugins/tc/ にあります。