答えは、カスタムorg.testng.IMethodSelector によるものです。
そのincludeMethod()は、公開されていないアノテーション付きメソッドなど、必要なメソッドを除外できます。
ただし、カスタムJava MethodSelectorを登録するには、任意の TestRunner によって管理されるXMLTestインスタンスにそれを追加する必要があります。つまり、独自のカスタム TestRunnerが必要です。
ただし、カスタム TestRunner をビルドするには、-testrunfactoryオプションを使用してTestRunnerFactoryを登録する必要があります。
ただし、 -testrunfactory はTestNGクラスによって考慮されることはありません...そのため、カスタム TestNG クラスも定義する必要があります。
- configure(Map) メソッドをオーバーライドするために、
- 実際に TestRunnerFactory を設定できます
- カスタムTestRunnerを構築するTestRunnerFactory、
- XMLTest インスタンスにカスタム XMLMethodSelector を設定する TestRunner
- カスタム IMethodSelector を構築する XMLMethodSelector
- 選択した TestNG メソッドを除外する IMethodSelector !
わかりました...それは悪夢です。しかし、これはコードの挑戦でもあるので、少し難しいでしょう ;)
すべてのコードはDZone スニペットで入手できます。
コードチャレンジのいつものように:
- 1 つの Java クラス (およびかなりの数の内部クラス)
- クラスをコピーして「source/test」ディレクトリに貼り付けます (パッケージが「test」であるため)
- 実行します (引数は必要ありません)
マイク・ストーンからの更新:
私が最終的にやったことにかなり近いように聞こえるので、これを受け入れるつもりですが、私がやったことも追加すると思いました.
基本的に、Test (およびその他の) アノテーションの groups プロパティのように動作する Groups アノテーションを作成しました。
次に、GroupsAnnotationTransformer を作成しました。これは IAnnotationTransformer を使用して、定義されているすべてのテストとテスト クラスを調べ、テストを変更してグループを追加します。これは、グループの除外と包含に完全に対応します。
新しいアノテーション トランスフォーマーを使用するようにビルドを変更すると、すべてが完全に機能します。
ええと... 1つの注意点は、テスト以外のメソッドにグループを追加しないことです...私がこれを行った時点で、何かを変換できる別の注釈トランスフォーマーがあったためですが、どういうわけか含まれていませんでしたなんらかの理由で使用していた TestNG で...だから、注釈付きの前後のメソッドを alwaysRun=true にすることをお勧めします...これで十分です。
最終結果は、私ができることです:
@Groups({ "myGroup1", "myGroup2"})
public class MyTestCase {
@Test
@Groups("aMethodLevelGroup")
public void myTest() {
}
}
そして、サブクラス化とすべてでトランスフォーマーを機能させました。