Mavenプラグインテスト-現代の方法で-パートV


私たちは、Mavenを動かすためにゴールを定義する方法を見ました.この部分では、使用するMaven呼び出しのシステムプロパティを定義する方法を詳しく見ていきます.
前の部分から取った簡単な例を見てみましょう.
@MavenJupiterExtension
class BaseIT {

  @MavenTest
  @MavenGoal("verify")
  void the_first_test_case(MavenExecutionResult result) {
     ...
  }
}
これは目標でMavenを実行しますverify . それでは、その統合テストケース内のすべてのユニットテストまたは任意のテストを実行を防ぐために何を行うことができますか?通常のコマンドラインで何をするのでしょうか?あなたが追加して-DskipTests あなたのMavenコマンドラインに.どのように、あなたは上記の統合テスト例をすることができましたか?このように非常に簡単です.
@MavenJupiterExtension
class PropertyIT {

  @MavenTest
  @MavenGoal("verify")
  @SystemProperty("skipTests")
  void goal_clean_skiptests (MavenExecutionResult result) {
     ...
  }
}
つまり、Mavenは以下のように呼び出されます.
mvn -DskipTests verify
次の手順を踏んでみましょう.
mvn ...:failure -DexecutionException=true -Dexception="This is the value of exception."
上記のように表現できます:
@MavenJupiterExtension
class PropertyIT {

  @MavenTest
  @MavenGoal("clean")
  @MavenGoal("${project.groupId}:${project.artifactId}:${project.version}:failure")
  @SystemProperty(value = "executionException", content = "true")
  @SystemProperty(value = "exception", content = "This is the value of exception.")
  void goal_failure_execution(MavenExecutionResult result) {
     ...
  }
}
ここで2つのことがわかります.最初に繰り返すことができます@SystemProperty 複数のシステムプロパティを定義するには、名前とプロパティの値の間に明確な分離を行うことができます.
既に期待していたように、前の例で使用したプロパティをこの単一メタアノテーションに組み合わせることができますメタアノテーションを作成できます.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RUNTIME)
@Inherited
@SystemProperty(value = "executionException", content = "true")
@SystemProperty(value = "exception", content = "This is the value of exception.")
public @interface ExecutionException {
}
このことを考えれば、ちょっと短すぎると思います.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RUNTIME)
@Inherited
@MavenTest
@MavenGoal("clean")
@MavenGoal("${project.groupId}:${project.artifactId}:${project.version}:failure")
@SystemProperty(value = "executionException", content = "true")
@SystemProperty(value = "exception", content = "This is the value of exception.")
public @interface FailureGoalWithExecutionException {
}
したがって、定義されたメタアノテーションは現在、このようにテストを行うために使用できます.
@MavenJupiterExtension
class PropertyIT {

  @FailureGoalWithExecutionException
  void goal_failure_execution(MavenExecutionResult result) {
     ...
  }
}
あなたは、前の説明されたメタ注釈を定義することができますexample project そして、それを使用する方法を感じてください.
便宜上、このようなメタアノテーションを作成することもできます.
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RUNTIME)
@Inherited
@SystemProperty("skipTests")
public @interface MavenSkipTests {
}
その他のこと.あなたが良い考えを持っているならばfeature request プロジェクトのためには、それの永久部分を作ることができます.
だから、これは一部のためのものです.あなたはIntegration Testing Framework
あなたは、相談することができますusers guide . あなたがリリースの状態を知っているような場合はrelease notes .
あなたがアイデア、提案やバグを見つけた場合file in an issue on github .
前の例を示すプロジェクト例found on GitHub .