2017-05-30 55 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。 –