这是我的情况。
在我的测试运行之前,在beforesuite中,我实例化了一堆“环境对象”这些对象是基于我的环境配置文件创建的。我的测试实际上将使用这些环境对象。问题是如何将它们传递给测试。
您的第一个冲动可能是使用数据提供程序,它会将正确的对象传递给测试。问题是数据提供者必须知道如何引用正确的对象然后传递它们。现在,环境对象只能通过名称(字符串 - >对象)
来引用我的另一个选择是将测试方法传递给引用正确对象的字符串。但这与上面的问题相同。
这两个选项都会产生大量依赖关系和问题。我还必须对密钥所指的类型做出许多假设。
这个问题的大部分源于我滥用TestNG的事实。我真正需要的是我自己的控制器,它可以在传递适当的环境对象时实例化我的Test对象。
我正在研究testng的TestRunner接口,但我不确定这是否可行。
任何和所有帮助表示赞赏。 埃里克
答案 0 :(得分:3)
为什么不混合使用@Factory和@DataProvider?
工厂将负责创建测试实例并向它们传递正确的参数:字符串(在这种情况下数据提供者可以将这些字符串转换为对象)或直接对象,在这种情况下您的测试可以使用这些价值直接。
如果这不能帮助您解决问题,请随意发布一些代码。
- 塞德里克
答案 1 :(得分:0)
我有类似的情况,最后改为使用java属性。
您可以在代码like this中使用该属性,并使用-Dmyproperty.value = hello将变量传递到JVM。我用它来做环境路径,服务URL,超时量等等。