maven-plugin-testing-harness
というライブラリが 提供されています。ここではこのライブラリをJUnitと組み合わせて、ユニットテストを作成する方法を紹介します。maven-plugin-testing-harness
を使用するために、以下2つの<dependency>
を pom.xml
に追加します。maven-plugin-testing-harness
ではJUnit4の@Rule
アノテーションを利用しての開発が可能です。 もっとも単純なテストは次のようになります。MojoRule
はMojoインスタンスを生成するためのJUnit Ruleです。TestResources
は各テストメソッドで固有のリソースを使うためのJUnit Ruleです。 src/test/projects
次にダミーのMavenプロジェクトが入ったディレクトリを配置しておき、 そのディレクトリ名をgetBasedir()
メソッドに渡すことで、ダミープロジェクトの設定を元に Mojoインスタンスを作成できます。MojoRule
のインスタンスメソッドを通じて取得したMojo
インスタンスのexecute()
メソッドを呼ぶことで、 実際にMavenプラグインを実行できます。execute()
メソッドが例外を投げずに終了した場合、Mavenプラグインが 正常終了したとみなせます。execute()
メソッドがMojoFailureException
あるいはMojoExecutionException
を投げることを確認するコードを書きます。 次のように@Test
アノテーションに期待される例外を指定してください。MojoExecutionException
は設定に問題がありMojoの実行ができなかったときに、MojoFailureException
は依存関係やプロジェクトが持つソースコードに問題がありMojoの実行が失敗したときに投げる必要があります。MojoExecutionException
はプラグイン提供者にとって予期しない問題が生じたときにビルドをエラー終了させるために使います。一方でMojoFailureException
はプラグイン提供者の想定する問題が生じたときにビルドを失敗させるために使います。 適宜使い分けてください。