我有一个简单的测试套件(对于此示例非常简单)。我在构造函数和@DataProvider上使用了@Factory表示法,它返回一个对象[] []的城市(多达100)我运行我的测试。在这个例子中有3个@Test方法。如果我没有在城市名称后附加测试名称,我会有一个HTML报告,它只是简单地列出了3个测试方法,无法区分它们。为testng HTML报告创建自定义方法名称
我试过这个SO例子:Here。
我的测试课很完美。我遇到的问题是,当我重写ITest getMethodName()时,我得到意外的输出。
我的代码:
@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{
}
}
我希望这是不够详细,传达出的例子。
输出:
使用cityClassNames奥尔巴尼,道夫,弯
打开HTML报告我希望清单如下:
奥尔巴尼:test1的
奥尔巴尼:TEST2
奥尔巴尼:test3
道夫:test1的
道夫:TEST2
道夫:TEST3
弯:test1的
弯:TEST2
弯:TEST3
我逼testng中的group_by_instance。XML
我所看到的HTML报告是这样的:
奥尔巴尼:TEST1(奥尔巴尼:TEST3)
奥尔巴尼:TEST2(奥尔巴尼:TEST3)
奥尔巴尼:TEST3(奥尔巴尼:TEST3)
道夫:TEST1(道夫:TEST3)
道夫:TEST2(道夫:TEST3)
道夫:TEST3(道夫:TEST3)
弯:TEST1(弯:TEST3)
弯:TEST2(弯:TEST3)
弯:TEST3(弯:TEST3)
我都看上了其他帖子里乡亲过类似的问题(即使我的手之前提到的职位)
我也TRIE d简单地在@AfterClass方法中。产出仍然存在问题。
我不明白如何解决这个问题。我测试了字符串,问题发生在getTestName()方法中。即使我传递了一些简单的“你好”,报告也会显示你好(你好)。
我想也许在TestNG Java代码中可能存在一个错误。
任何解决方案或指导非常赞赏。
你能否在https://github.com/cbeust/testng/issues上打开一个问题,提供一个示例,使我们能够重现和修复ITest问题? – juherr
当然,我可以做到这一点 – Miek