我一直在谷歌搜索几天,试图弄清楚如何做到这一点,如果有人在我非常感谢您的帮助之前已经做到了这一点。
我有一个在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文件的步骤:
笔记:
文件文件=新文件(“ 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选项…”>“安全性”(选项卡)>“启用保护模式”复选框)