Ich habe eine einfache Testsuite (Sehr einfach für dieses Beispiel). Ich benutze die @Factory-Notation über den Konstruktor und einen @DataProvider, der ein Objekt [] [] von Städten (bis zu 100) zurückgibt, an denen ich meine Tests durchführe. In diesem Beispiel gibt es 3 @ Test-Methoden. Wenn ich die Testnamen nicht mit dem Städtenamen anhefte, würde ich einen HTML-Bericht haben, der einfach 3 Testmethoden aufführt, ohne sie zu unterscheiden.Erstellen von benutzerdefinierten Methodennamen zum Testen von HTML-Berichten
Ich habe dieses SO Beispiel versucht: Here.
Meine Testklasse funktioniert perfekt. Das Problem, das ich habe, ist, dass, wenn ich den ITest getMethodName() überschreibe, ich unerwartete Ausgabe bekomme.
Mein Code:
@Test(sequential = true)
public class ParcelSearchPage implements ITest{
private String cityClassName;
private String cityName;
private mTestCaseName = "";
@Factory(dataProvider="getCities")
public ParcelSearchPage(String className , String cityName){
this.cityClassName = className;
this.cityName = cityName;
}
@DataProvider
public Object[][] getCities(){
return new Object[][]FromAnotherMethod();
}
@Override //from ITest
public String getTestName() {
return this.mTestCaseName;
}
@BeforeMethod(alwaysRun = true)
public void testData(Method method) {
this.mTestCaseName = String.format("%s : %s" , this.cityClassName, method.getName());
}
@BeforeClass(alwaysRun = true)
public void startup(){
// init stuff
}
@Test
public void test1(){
}
@Test
public void test2{
}
@Test
public void test3{
}
}
Ich hoffe, dass dies detailliert genug ist das Beispiel zu vermitteln.
Ausgang:
Mit cityClassNames Albany, Astoria, Bend-
der HTML-Bericht öffnen würde ich eine Liste erwarten wie folgt:
Albany: test1
Albany: test2
Albany: test3
Astoria: test1
Astoria: test2
Astoria: test3
Bend test1
Bend test2
Bend test3
Ich bin gezwungen group_by_instance in der Prüfung.xml
Was ich in der HTML-Bericht sehe, ist dies:
Albany: test1 (Albany: test3)
Albany: test2 (Albany: test3)
Albany: test3 (Albany: test3)
Astoria: test1 (Astoria: test3)
Astoria: test2 (Astoria: test3)
Astoria: test3 (Astoria: test3)
Bend Test1 (Bend test3)
Bend Test2 (Bend test3)
Bend test3 (Bend test3)
ich habe andere Post gesichtet, wo Leute ähnliche Probleme gehabt haben (auch die Post habe ich vor der Hand erwähnt)
I trie auch d dies kurz in einer @ AfterClass-Methode. Die Ausgabe war immer noch problematisch.
Ich verstehe nicht, wie dies zu korrigieren. Ich habe die Zeichenfolge getestet und das Problem tritt in der getTestName() -Methode auf. Selbst wenn ich etwas Einfaches wie 'Hallo' übergebe, wird der Bericht Hallo (Hallo) anzeigen.
Ich denke, vielleicht könnte es ein Fehler in dem TestNG Java-Code sein.
Alle Lösungen oder Beratung sehr geschätzt.
Können Sie ein Problem auf https://github.com/cbeust/testng/issues mit einem Beispiel öffnen, mit dem wir das ITest-Problem reproduzieren und beheben können? – juherr
Sicher kann ich das tun – Miek