2017-05-30 74 views
1

我想在使用大量的參數化對象的其中一個類重命名的測試方法。重命名參數TestMethod的

例如,如果我有一個測試方法設置像這樣:

import org.testng.annotations.DataProvider; 
import org.testng.annotations.Test; 
/** 
* Unit test for simple App. 
*/ 
public class AppTest 
{ 
    static class data_class{ 
     public String name; 
     public String two; 
     public data_class(String name, String two){ 
      this.name = name; 
      this.two = two; 
     } 
    } 

    @DataProvider(name = "prov1") 
    public static Object[] prov1(){ 
     return new Object[] { new data_class("one", "one"), new data_class("two", "two") }; 
    } 

    @Test(dataProvider="prov1") 
    public void testApp(data_class input) 
    { 
     System.out.println(String.format("Name: %s Two: %s", input.name, input.two)); 
    } 
} 

測試運行的輸出(在Eclipse,萬無一失XML報告是相似的)示出了該輸出,通知方法名是testApp與類的對象ID作爲唯一的區別:

Test Results

我要輸出的自定義字符串作爲兩種測試方法的名稱或參數,以便在詹金斯,我可以很輕鬆地看到測試案例打破了試驗。

我試過創建一個註解監聽器,它實現了IAnnotationTransformer,但是當我執行annotation.setTestName("test")時,它對結果輸出沒有任何影響。

我該如何做到這一點?

+1

你在'data_class'上試過'toString()'impl了嗎?另外,'data_class'不是最大的類名。按照慣例,java中的類名是大寫,CamelCase。例如:'MyClass' – Taylor

回答

1

添加了toString您data_class類方法。

public String toString(){ 
    return this.name; 
} 
+0

不知道爲什麼我沒有想到這個,但它適用於我的情況。謝謝! 我曾希望確定是否有辦法設置任意名稱。例如,如果我發送兩個對象,並且需要根據它們兩者設置名稱,或者我無法更改toString方法。 – Chris

+0

AFAIK不能有一個跨越多個對象,要麼你可以用一個類我這種情況下,一些有意義的名稱和TestNG將逗號分隔和俱樂部的那些包兩個對象,人有兩個班的toString。 –