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

标签 java unit-testing jar testng executable-jar

我有一个可执行 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();

关于java - 如何从可执行 jar 中的 main() 运行 TestNG 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16465695/

相关文章:

java - Android SharedPreferences 示例

unit-testing - 在Grails单元测试中使用mockDomain后是否需要删除metaClass?

reactjs - 如何修复背景颜色单元测试

java - 创建一个可运行的 jar。各种问题

java - 当我将 .jar 文件包含到我的 android 项目中时出现 Dex 错误

java - 为什么从 CMD 运行 JAR 文件时收到 NoClassDefFoundError?

java - 为什么我的哈希函数收到负值?

Android注解和单元测试

java - 如何使用 python 在 jar 文件中调用 python 脚本?

java - 如何在 Java 中迭代 HashMap 值时替换它们