私は現在、例えば、自分の名前に特定の文字列を含むXMLに記載されているすべてのテストを除外するIAnnotationTransformerを使用しています。しかし起因して、これは完璧にうまく機能testMethodによって呼び出されるすべてのメソッドを取得するにはどうすればよいですか? (Javaの、TestNGの、IAnnotationTransformer)
@Override
@SuppressWarnings("rawtypes")
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
if(testMethod.getName().contains("StringGoesHere")){
annotation.setEnabled(false);
}
私のテストの命名規則、および私が除外しなければならない膨大な量のテストでは、理想的な解決方法は、特定のメソッドを呼び出す場合にテストを除外する方法を見つけることです。例えば、私は方法の.clickUserSettings要請するすべてのテスト()を以下に示し除外したい:
@Test
public void editUserDetailsOnStackOverflow() {
final StackOverflow so = stackOverflow.loginAsMe()
.clickUserSettings()
.changeUserEmail()
.clickSave()
.assertChangeSuccessful();
}
を誰もが、私はこれを達成することができるかもしれない方法を知っていますか?私は他のすべての手段(クラス、パッケージ、testMethods、グループ、xmlなど)を探検したような気がします。このようにしなければならない理由は、現在40,000テスト(15,000件がテスターによって設定されたbrowserMode変数で)これは私が達成するために期待していた一般的な考え方です:
@Override
@SuppressWarnings("rawtypes")
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
if(testMethod.getAllCalledMethods.contains(".clickUserSettings()")){
annotation.setEnabled(false);
}
これは、それは私の問題を解決するに行うことができる場合は、
乾杯
なぜグループが目的に適していないのですか? –
まあ、箱からすぐに何もあなたにこれを与えることはありません。これらのメソッドのリストを生成する、事前テストとして実行する外部スクリプトを作成することを検討してください。このスクリプトは、アノテーショントランスフォーマで無効にすることができます。いくつかの方法:http://stackoverflow.com/questions/930289/how-can-i-find-all-the-methods-that-call-a-given-method-in-javaあなたは、ファイルやいくつかのソリューションを考えるあなたの含まれているテストのクイックループでgrepを行うことができます –