Ich bin derzeit IAnnotationTransformer mit allen Tests in einer XML aufgeführt auszuschließen, die eine bestimmte Zeichenfolge im Namen enthält, zum Beispiel:Wie bekomme ich alle Methoden, die von einer testMethode aufgerufen werden? (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);
}
Diese sehr gut funktioniert, aber aufgrund Die Namenskonvention meiner Tests und die große Menge an Tests, die ich ausschließen muss, wäre die ideale Lösung, um den Test auszuschließen, wenn er eine bestimmte Methode anfordert. Zum Beispiel möchte ich alle Tests auszuschließen, die auf die Methode .clickUserSettings() aufrufen, unten gezeigt:
@Test
public void editUserDetailsOnStackOverflow() {
final StackOverflow so = stackOverflow.loginAsMe()
.clickUserSettings()
.changeUserEmail()
.clickSave()
.assertChangeSuccessful();
}
Wer weiß, wie ich vielleicht in der Lage sein, dies zu erreichen? Ich habe das Gefühl, dass ich alle anderen Möglichkeiten (Klassen, Pakete, Testmethoden, Gruppen, XML usw.) erforscht habe. Der Grund dafür ist, dass ich derzeit 40.000 Tests habe (15.000 davon werden wahrscheinlich ausgeschlossen sein) diese auf der browserMode Variable durch den Tester gesetzt) ist die allgemeine Idee, die ich hatte gehofft, zu erreichen: Wenn
@Override
@SuppressWarnings("rawtypes")
public void transform(ITestAnnotation annotation, Class testClass, Constructor testConstructor, Method testMethod) {
if(testMethod.getAllCalledMethods.contains(".clickUserSettings()")){
annotation.setEnabled(false);
}
dies getan werden kann, es ist mein Problem zu lösen,
Prost
Warum Gruppen nicht für den Zweck geeignet sind? –
Nun - nichts aus der Box wird Ihnen das geben. Erwägen Sie, ein externes Skript zu schreiben, das als Pre-Test-Sache oder als Vorversion ausgeführt wird - generiert eine Liste dieser Methoden, die Sie in Ihrem Annotation-Transformer deaktivieren können. Einige Möglichkeiten: http: //stackoverflow.com/questions/930289/how-can-i-find-all-the-methods-that-call-a-given-method-in-java. Sie können ein Grep in den Dateien oder eine schnelle Schleife Ihrer eingeschlossenen Tests machen, um an einige Lösungen zu denken –