2017-06-15 125 views
0

我有一个简单的测试套件(对于此示例非常简单)。我在构造函数和@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代码中可能存在一个错误。

任何解决方案或指导非常赞赏。

回答

0

当@Test方法没有参数时,我提出了一个工作得很好的黑客。

我创建了第二个数据提供者,它简单地返回当前城市名称的Object []。然后,我在测试方法中为城市名称创建了一个String参数,并使用@Test表示法列出了新的数据提供者。我删除了ITest接口完全

所以现在输出的是:

TEST1(奥尔巴尼)

test2的(奥尔巴尼)

TEST3(奥尔巴尼)

TEST1(道夫)

test2(Astoria)

etc等

这并不完美,但它适合我的需求。

+0

你能否在https://github.com/cbeust/testng/issues上打开一个问题,提供一个示例,使我们能够重现和修复ITest问题? – juherr

+0

当然,我可以做到这一点 – Miek