maven - 为 testNG 项目创建 Maven Fat jar

标签 maven testng executable-jar

我对 Maven 完全陌生。我有一个使用 TestNG 注释的 Maven 项目(selenium 项目)。这意味着我在整个项目中没有 main 方法。我想使用 mvn package 创建一个 fat JAR 文件。我浏览了几篇关于 mvn 包的文章,但找不到任何相关的东西。对于没有主要方法的项目,我们如何实现这一点。

EDIT

在检查更多文章时,我添加了下面的类,其主要方法如下

public class MainTest
{
    public static void main(String[] args)
      {
        TestListenerAdapter tla = new TestListenerAdapter();
        TestNG testng = new TestNG();
        testng.setTestClasses(new Class[] { AnnotationTest.class });
        testng.addListener(tla);
        testng.run();
     }
}

其中AnnotationTest是一个使用所有注释的类。 当我从命令行运行生成的 *one-jar.jar 文件时,我得到 ClassNotFoundException:AnnotationTest 。由于它是 Maven 项目,我的 test.class 文件位于 /target/test-classes 中。我如何使其在 main 方法中可用。

最佳答案

我试图解决同样的问题,所以万一其他人出现在这里,这就是我解决这个问题的方法:

我创建了一个主类,它运行 testng.xml 文件中的所有类,如下所示:

public class MainClass {

    public static void main(String[] args){
        // Get the path to testng.xml
        String xmlPath = System.getProperty("user.dir") + "/testng.xml";

        // Run all the tests in testng.xml
        TestNG testng = new TestNG();
        List<String> suites = Lists.newArrayList();
        suites.add(xmlPath);
        testng.setTestSuites(suites);
        testng.run();
    }
}

然后您可以使用 Maven 为您构建 fat jar,如下所述:How can I create an executable JAR with dependencies using Maven?

这仅在您已经有一个 testng.xml 文件时有帮助,而不是必须将其命名为该文件,您只需要 xml 中已定义的所有类或测试,如下所示:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Your Suite Name">

    <test name="TestName">
        <classes>
            <class name="com.fullyQualified.ClassName"></class>
            <class name="com.fullyQualified.ClassName2"></class>
            <class name="com.fullyQualified.ClassName3"></class>
        </classes>
    </test>

</suite>

关于maven - 为 testNG 项目创建 Maven Fat jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32373709/

相关文章:

maven - 如何在没有 Nexus 的情况下托管 Maven 仓库

unit-testing - 我如何让 Guice 和 TestNg 一起玩,a-la-AtUnit 风格

java - 如何定义可执行 jar 文件的正确类路径?

java - 运行导出的 .jar 时,"Native code library failed to load"在 IDE 之外

java - 如何跳过执行期间挂起/卡住的测试 Selenium - Maven - Jenkins

java - 类型 Dynamic Web Module 3.0 需要 Java 1.6 或更新版本,java 插件错误

java - Maven:首先使用容器依赖关系解决依赖关系

java - [TestNG][Jar] 在 list 中设置类路径(类路径)——类路径被忽略?

testing - Selenium Web测试自动化框架最佳实践

java - .jar 可在命令行中工作,但不能在 Windows 资源管理器中工作