传递TestNG方法的对象参数?

时间:2010-02-09 20:27:05

标签: java unit-testing testng

这是我的情况。

在我的测试运行之前,在beforesuite中,我实例化了一堆“环境对象”这些对象是基于我的环境配置文件创建的。我的测试实际上将使用这些环境对象。问题是如何将它们传递给测试。

您的第一个冲动可能是使用数据提供程序,它会将正确的对象传递给测试。问题是数据提供者必须知道如何引用正确的对象然后传递它们。现在,环境对象只能通过名称(字符串 - >对象)

来引用

我的另一个选择是将测试方法传递给引用正确对象的字符串。但这与上面的问题相同。

这两个选项都会产生大量依赖关系和问题。我还必须对密钥所指的类型做出许多假设。

这个问题的大部分源于我滥用TestNG的事实。我真正需要的是我自己的控制器,它可以在传递适当的环境对象时实例化我的Test对象。

我正在研究testng的TestRunner接口,但我不确定这是否可行。

任何和所有帮助表示赞赏。 埃里克

2 个答案:

答案 0 :(得分:3)

为什么不混合使用@Factory和@DataProvider?

工厂将负责创建测试实例并向它们传递正确的参数:字符串(在这种情况下数据提供者可以将这些字符串转换为对象)或直接对象,在这种情况下您的测试可以使用这些价值直接。

如果这不能帮助您解决问题,请随意发布一些代码。

- 塞德里克

答案 1 :(得分:0)

我有类似的情况,最后改为使用java属性。

您可以在代码like this中使用该属性,并使用-Dmyproperty.value = hello将变量传递到JVM。我用它来做环境路径,服务URL,超时量等等。