当前位置: 首页 > 面试题库 >

如何使用IntelliJ从Selenium / TestNG Java文件制作可执行jar文件?

岳亮
2023-03-14
问题内容

我一直在谷歌搜索几天,试图弄清楚如何做到这一点,如果有人在我非常感谢您帮助之前已经做到了这一点。

我有一个在IntelliJ中创建的自动化测试项目,该项目可以使用户与Web应用程序进行交互的过程自动化。

我想将自动测试(使用Selenium和TestNG在Java中创建)放入可执行的jar文件中,其他人可以通过双击jar文件来运行它。

每当我尝试通过导航到Project Structure-> Artifact-> +->
Jar->从具有依赖性的模块中创建一个jar文件时,最终都会创建一个声明它的jar,

"Could not find or load the main class <package.MainClass> "

当我尝试使用以下命令运行它时:

java -jar MyProject.jar <Manifest Path>

知道为什么我会不断收到此错误,或者有办法成功完成此操作吗?

另外,这是我的pom.xml:

<groupId>TestAutomation</groupId>
<artifactId>TestAutomation</artifactId>
<version>1.0-SNAPSHOT</version>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.test.automation.Executable</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-server</artifactId>
        <version>2.39.0</version>
    </dependency>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.40.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.1.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

问题答案:

我终于找到了碰巧遇到这个问题的其他人的方法,这就是我如何创建jar文件并成功运行它的方法。

我必须将pom.xml文件更改为以下内容:

<groupId>TestAutomation</groupId>
<artifactId>TestAutomation</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<url>http://maven.apache.org</url>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>com.test.automation.Executable</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>2.40.0</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.testng</groupId>
        <artifactId>testng</artifactId>
        <version>6.1.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>

然后,我不得不调整我的主要方法,以不使用任何与TestNG相关的调用。例如,我不能将以下内容用于我的主要方法:

    TestListenerAdapter tla = new TestListenerAdapter();
    TestNG testng = new TestNG();
    testng.setTestClasses(new Class[] {WordProfFonts2Set0.class});
    testng.addListener(tla);
    testng.run();

最后,以下是创建适当的jar文件的步骤:

  1. 从顶部菜单中选择文件>项目结构…
  2. 在左侧菜单上选择“工件”,然后单击“ +”
  3. 选择Jar>来自具有依赖性的模块…
  4. 使用浏览按钮选择您的主要班级
  5. 单击“提取到目标jar”旁边的单选按钮,然后单击“确定”。
  6. 单击“ +”,然后选择“模块测试输出”
  7. 在右侧的“可用元素”窗格中,展开项目名称并选择所有Maven文件,然后将它们移动到在左窗格中创建的jar目录中。
  8. 点击“确定”
  9. 从顶部菜单中选择Build> Build Artifacts …
  10. 将鼠标悬停在创建的jar上,然后在“操作”下单击“构建”

笔记:

  1. 确保将IE或Chrome驱动程序添加到您的项目资源文件夹中,并通过代码文件夹而不是计算机的硬盘驱动器进行调用。例如,执行以下操作:

文件文件=新文件(“ src \ test \ resources \ binaries \ IEDriverServer.exe”);

不是这个:

File file = new File
("C:\\Users\\<Username>\\<Proj Name>\\src\\test\\java\\src\\
  test\\resources\\binaries\\IEDriverServer.exe");

然后在将jar保存到计算机的同一文件夹中,创建具有驱动程序的相同目录:

src
TestAutomation.jar

2。如果使用IE,请确保为所有区域或全部区域都未设置保护模式(在IE中,转到“ Internet选项…”>“安全性”(选项卡)>“启用保护模式”复选框)



 类似资料:
  • 问题内容: 我一直在谷歌搜索几天,试图弄清楚如何做到这一点,如果有人在我非常感谢您的帮助之前已经做到了这一点。 我有一个在IntelliJ中创建的自动化测试项目,该项目可以使与Web应用程序交互的用户自动化。 我想将自动测试(使用Selenium和TestNG在Java中创建)放入可执行的jar文件中,其他人可以通过双击jar文件来运行它。 每当我尝试通过导航到Project Structure-

  • 问题内容: 我有一个包含两个简单的Java swing文件的程序。 如何为程序制作可执行的jar文件? 问题答案: jar文件只是包含Java文件集合的文件。为了使jar文件可执行,你需要指定 Class在jar文件中的位置。示例代码如下。 编译你的类。要制作一个jar,你还需要创建一个清单文件()。例如, 将编译后的输出类文件(JarExample.class,JarExample $ 1.cl

  • 我正在使用JPackage(OpenJDK 15.0.1)为Windows制作一个可移植的可执行文件。我尝试了下面的命令,但我双击了生成的exe文件,显示了安装程序窗口。它似乎不是可移植的可执行文件,而只是安装程序。 有什么办法可以用JPackage制作一个不用安装就可以使用的可执行文件?

  • 我正在使用Firefox47.0和Selenium2.53。最近,它们是Selenium和Firefox之间的一个bug,使代码无法工作。解决方案之一是使用Marionnette驱动程序。 编辑1:我尝试了以下代码: 而且它正在工作,似乎问题来自RemoteWebDriver和gecko驱动程序,你们有消息吗?

  • 问题内容: 我有一个Maven项目,其中我正在尝试执行脚本(用R编写)。我也将此脚本文件放在源代码目录中。我发现此脚本根本没有执行。但是,当我将此脚本移到jar文件之外时,它会执行!谁能告诉我原因,并给我一些解决方案以将脚本放入jar中,同时确保其执行? 非常感谢 ! 问题答案: 我将执行以下操作: 使用ClassLoader.getResourceAsStream()获取文件的InputStre