maven命令执行testgn.xml
想通过maven命令运行测试项目,需要先在pom.xml中添加插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine><!-- 解决读取测试数据时的中文乱码问题 -->
<suiteXmlFiles>
${project.basedir}/src/main/resources/testng.xml
</suiteXmlFiles>
</configuration>
</plugin>
${project.basedir}/src/main/resources/testng.xml
是testng.xml文件的路径。
然后还需要在pom.xml的project下配置,这样能识别中文:
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
</properties>
打开cmd,进到项目根目录:
mvn test 执行项目打包和测试
D:\Springboot\MyApplicationthree>mvn test
执行2条用例都执行成功了

maven命令执行java测试类
在test/java目录下有一个测试类,需要通过maven命令执行java测试类,测试类必须放到test/java目录下:

在pom文件中需要把上面讲到的插件先注释掉,同时加入以下插件,include中写入测试类名称:
<!--<plugin>-->
<!--<groupId>org.apache.maven.plugins</groupId>-->
<!--<artifactId>maven-surefire-plugin</artifactId>-->
<!--<version>2.19</version>-->
<!--<configuration>-->
<!--<forkMode>once</forkMode>-->
<!--<argLine>-Dfile.encoding=UTF-8</argLine><!– 解决读取测试数据时的中文乱码问题 –>-->
<!--<suiteXmlFiles>-->
<!--${project.basedir}/src/main/resources/testng.xml-->
<!--</suiteXmlFiles>-->
<!--</configuration>-->
<!--</plugin>-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine><!-- 解决读取测试数据时的中文乱码问题 -->
<!--只能运行在test目录下的类-->
<includes>
<include>
getdatabase.java
</include>
</includes>
</configuration>
</plugin>

在cmd中进入项目根目录,输入mvn test 执行测试

maven命令执行多线程并行执行
appium是在同一个设备上运行,好像不太可行,后面会再讲解
并行测试时,测试用例之间不能太耦合,就是每个测试用例都可以单独出来去执行,互相没有关联,这样才能不放到一个线程中分开并行执行。
pom文件中增加插件信息
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine><!-- 解决读取测试数据时的中文乱码问题 -->
<excludes><!--排除这个类,不测试这个类-->
<exclude>
getdatabase.java
</exclude>
</excludes>
<parallel>methods</parallel>
<threadCount>3</threadCount>
<suiteXmlFiles>
<suiteXmlFile>
${project.basedir}/src/main/resources/testng.xml
</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>

maven远程调用
mvn -Dmaven.surefire.debug test
需要在idea中先设置远程调试IP和端口号,再设置断点然后调试。
为什么会有远程调试,如果把脚本放到git仓库上,另一台电脑从git仓库下载代码,通过mvn test运行测试,在本地执行程序没有问题,在另一台电脑上通过mvn执行可能会有问题,因为maven的编译器和idea、eclipse的编译器不一样,会有差别。如果出现了问题,通过在本地idea中设置远程调试另一台电脑上的代码查看mvn运行时问题出现在哪个环节。
在idea中设置远程调试步骤:
参考:https://blog.csdn.net/u014513883/article/details/53583495
maven私服
有些公司会自己去建私服,就是maven依赖的jar包仓库,在nexus网站上创建私服,会有一个id,name,产生一个url地址,上传公司内部需要的jar包,本地在pom文件中可以引用仓库地址

maven项目中引入jar包流程
创建一个项目A,然后打包成jar包,被另一个项目B引入。
目前能够被其他项目引入的jar包,以我目前的知识了解的只有两种,带有main方法的项目、springboot的项目,springboot项目中是需要用Application启动项目的所以它的mainclass就是application启动项所在的路径。
先说springboot的项目,在pom文件中要先添加插件,插件代码如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.course.Application</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<build>
<mainClass>com.course.Application</mainClass>
是在application启动项在src/java/com.course目录下。
如果是普通的项目,需要有main方法,如下项目:
先写一个方法:

再写一个main方法:

在该项目的pom文件中添加插件:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.yixin.TestmainTestng</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<!--下面是为了使用 mvn package命令,如果不加则使用mvn assembly-->
<executions>
<execution>
<id>make-assemble</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
注意:<artifactId>maven-compiler-plugin</artifactId>和springboot项目的打包插件中是一样的,不一样的是<artifactId>maven-assembly-plugin</artifactId>,
<mainClass>com.yixin.TestmainTestng</mainClass> 是main方法的路径。
补充:如果是testng的项目,只需要在插件中输入:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>
./src/main/resources/TestJenkins.xml
</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
maven打包时会自动去找Testng.xml运行打包,也就是下面这句代码中定义的xml:
<suiteXmlFile>
./src/main/resources/TestJenkins.xml
</suiteXmlFile>
当然也可以利用上面讲到的maven执行java类的方法运行打包。
配置完pom文件后,就可以打包了,按如下图中操作可以很简单的打包:


打开cmd,进入项目jar所在目录,用java -jar jar包名称,执行jar能正常输出结果代表jar包构建成功

进入项目B中,引入项目A的jar包:



在项目B中可以import 项目A中的类,同时可以用到该类中的方法:

网友评论