运行时为testNG生成DataProvider

时间:2014-02-15 11:12:02

标签: java testing testng

我想为testNG创建一个扩展。我想添加一个提供参数作为字符串,解析这些字符串并转换为复杂类型的可能性。这样的隐式数据提供者具有较少的样板。类似于zohhak的junit。

@Test
@MyParameters({"1, 2014-02-12",
               "3, null",
               "7, 2012-08-23"})
public void testMethod(int number, Date date) {
  ...
}

但我完全不知道如何做到这一点。我知道有听众,但看起来他们可以多次执行相同的方法或提供参数。我能想到的唯一方法是在运行中生成一个带有数据提供者的类并分配该数据提供者。有没有更简单的解决方案?

1 个答案:

答案 0 :(得分:0)

似乎我做了类似的事情。将尝试解释我做了什么:

环境:TestNg + Spring + XMLBeans

所有测试只有一个DataProvider(org.testng.annotations.DataProvider)。 它收到了一个xml文档,其中包含参数定义,例如

<test name="test1">
    <case>
        <parameter type=”bla.bla.bla.MyBean”>bean_id</parameter>
        <parameter type="int">1</parameter>
        <parameter type=”boolean”>true</parameter>
    </case>
</test>

测试方法如下所示

@Test(dataProvider = "MyProvider")
public void test1(MyBean beanObj, int intParam, Boolean boolParam)
{
    …
}

所以,我唯一拥有的是实现“转换”方法。基于输入xml创建Object [] []的方法。

“坏”的事情是“转换”方法应该知道你需要的所有类型。所以,我的情况是相当大的。

“好”的是,只有一个数据提供者,您不需要在测试中转换对象。