说明:本文部分内容来源于网络,侵删
testng可以用以下的方式调用
- 命令行
- ant
- Eclipse
- IntelliJ’s IDEA
命令行调用
简单的调用方法:
java org.testng.TestNG testng1.xml [testng2.xml testng3.xml ...]
然而直接使用上述命令,执行后报错:找不到或无法加载主类 org.testng.TestNG。
想要使用命令行调用,需要先设置testng.jar到环境变量…由于命令行使用较少,不做讨论。
mvn 命令
需要使用插件maven-surefire-plugin。参考:https://zhuanlan.zhihu.com/p/50935348
1. 先在pom文件中加入下面段落
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<suiteXmlFiles> <suiteXmlFile>testngxml/All.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
suiteXmlFile配置testngxml/的All.xml的是要执行的testng.xml类型的相对路径和文件名称。
2. 执行:mvn clean test
就会执行suiteXmlFile配置的ALl.xml文件。
3. 如果为了支持回归测试/冒烟测试等多种测试场景,有多个testng.xml文件,那么怎么切换呢?
- 第一种办法:替换pom文件中的文件名,当做成持续集成时,写个shell脚本,进入pom文件所在目录下,替换pom文件中ALl.xml文件,参数$2=Regression.xml
#! /bin/bash
cd /var/lib/jenkins/workspace/interfaceTest_ScpBusiness/scp-business-interfaceTest
sed -i "s?<suiteXmlFile>testngxml/.*</suiteXmlFile>?<suiteXmlFile>testngxml/$2</suiteXmlFile>?g" pom.xml
echo $2
- 第二种办法:就是不修改pom文件中的suiteXmlFile配置,而是重命名testngxml文件,修改成suiteXmlFile配置的名字。
- 第三种办法(不推荐):创建多个pom文件:pom1.xml pom2.xml,它们唯一的区别就是suiteXmlFile配置的testngxml文件名不一致,需要执行哪个testngxml,就运行对应的pom.xml文件。但是因为pom文件还承担者项目的依赖维护,所以不推荐此方式,维护起来太麻烦。
- 第四种办法(推荐):将上述pom.xml中的
<suiteXmlFile>testngxml/All.xml</suiteXmlFile>
改成
<suiteXmlFile>${suiteXmlFile}</suiteXmlFile>
然后在pom.xml中的properties里加一行
<properties>
...
<suiteXmlFile>testng/All.xml</suiteXmlFile>
</properties>
# 此处All.xml是默认的xml文件,如果执行测试时,不传参数进来,则会执行此文件。
执行mvn clean test -DsuiteXmlFile=testng/Smoke.xml