如何从main方法到测试类获取参数

时间:2013-12-03 07:22:15

标签: java selenium testng

我正在研究Selenium项目。我正在以编程方式运行TestNG,因为我需要main方法,因为我正在通过包含所有依赖项的maven-shade插件创建.jar文件。

public class EDITestApp {   
public static void main(String[] args) {        
    TestListenerAdapter tla = new TestListenerAdapter();
    TestNG testng = new TestNG();
    Class[] classes = new Class[]{
            LoginTest.class,
            ContractorsTest.class,
            ActiveContractorsTest.class,
            InvitedContractorsTest.class,
            CancelledContractorsTest.class,
            MainPageTest.class
    };
    testng.setTestClasses(classes);
    testng.addListener(tla);
    testng.run();
}

我想让我的.jar文件与我的所有测试一起运行,命令行参数包含,例如,设置将运行测试的浏览器的参数。是否可以从我的测试类中获取此参数,该测试类使用特定浏览器创建驱动程序实例,或者我需要在main方法中创建动态testng.xml并在.xml文件中设置属性?

1 个答案:

答案 0 :(得分:1)

您可以将cmd参数作为测试的参数传递。我检查了TestNG类API,它没有为您提供这样的功能。但是有一个类可以做 - XmlSuite()。您将所有类添加到XmlSuite,然后使用setXmlSuites()将该套件添加到TestNG。 XmlSuite允许使用setParameters()定义参数。

示例代码 -

XmlSuite suite = new XmlSuite();
suite.setParameters(suiteParameters - you can use a map(key,value));
classes = new ArrayList<XmlClass>();
classes.add(new XmlClass(fullClassName));
--here add all the required test class to classes object.
test.setXmlClasses(classes);
List<XmlSuite> suites = new ArrayList<XmlSuite>();
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();

如果您需要更多帮助,请与我们联系。