当前位置 : 主页 > 网络安全 > 测试自动化 >

如何从可执行jar中的main()运行TestNG测试?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我有一个可执行的JAR,它包含所有依赖项和测试类.我已经确认在执行jar时会调用main()方法.我正在尝试向main()添加代码,以便我可以运行特定的TestNG测试类.从TestNG.org上的文档来看,这似乎就
我有一个可执行的JAR,它包含所有依赖项和测试类.我已经确认在执行jar时会调用main()方法.我正在尝试向main()添加代码,以便我可以运行特定的TestNG测试类.从TestNG.org上的文档来看,这似乎就是这样做的:

TestListenerAdapter tla = new TestListenerAdapter();
    TestNG testng = new TestNG();
    testng.setTestClasses(new Class[] { com.some.path.tests.MyTests.class });
    testng.addListener(tla);
    testng.run();

我的文件夹结构很典型:

/src/main/java/Main.java
    /src/test/java/com/some/path/tests/MyTests.java

但是,当我尝试编译它时,我收到此错误:

java: /src/main/java/Main.java:46: package com.some.path.tests does not exist

无论如何我可以改变我的项目,以便main()中的testng.setTestClasses()可以访问测试类吗?

我在main()方法中使用了以下内容并且它有效.

CommandLineOptions options = new CommandLineOptions();
    JCommander jCommander = new JCommander(options, args);

    XmlSuite suite = new XmlSuite();
    suite.setName("MyTestSuite");
    suite.setParameters(options.convertToMap());

    List<XmlClass> classes = new ArrayList<XmlClass>();
    classes.add(new XmlClass("com.some.path.tests.MyTests"));

    XmlTest test = new XmlTest(suite);
    test.setName("MyTests");
    test.setXmlClasses(classes);

    List<XmlSuite> suites = new ArrayList<XmlSuite>();
    suites.add(suite);

    TestNG testNG = new TestNG();
    testNG.setXmlSuites(suites);
    testNG.run();
网友评论