传递TestNG方法的对象参数?

问题描述 投票:1回答:2

这是我的情况。

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

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

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

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

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

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

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

java unit-testing testng
2个回答
3
投票

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

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

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

- 塞德里克


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.