2010-02-09 74 views
1

这是我的情况。传递TestNG方法的对象参数?

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

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

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

这两个选项都会产生很多依赖性和问题。我还必须对关键所指的类型做出很多假设。

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

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

任何和所有的帮助表示赞赏。 Eric

回答

3

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

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

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

- 塞德里克

+0

我认为这是一样好,因为它会得到。我不知道@factory,我是愚蠢的或当然。感谢您的建议。 – esiegel

0

我也有类似的情况,结束了使用Java属性来代替。

您可以使用代码like this中的属性,并使用-Dmyproperty.value = hello将变量传递给JVM。我用它的东西,如环境路径,服务URL,超时量等。