简单介绍java
运行TestNG测试脚本能够经过ant构建、xml执行和命令行执行。当想执行某个包或者某个类中的一部分测试脚本的时候,使用xml配置文件是很是便利的,不只能够选择某些须要执行的测试脚本,还能够排除某些不须要运行的脚本。apache
建立testng.xml文件api
IDEA自动生成:https://www.jianshu.com/p/609a4dcf86ad 或者新建文件后缀.xml也能够。maven
1.首先声明一个suite名字,用于描述将要运行的测试脚本集,根据须要任意命名,最终这个名字会在testng的测试报告中看到。测试
<?xml version="1.0" encoding="UTF-8"?> <suite name="SuiteName" verbose="1" > <test name="TestName" >
2.若是选择的测试脚本是基于组的(使用了@Test (groups={"student"})这样的注解),那么接下来须要声明如何使用这些组:包含或者排除。若是使用了include标签标注某些组,那么在选择的测试脚本中,只有属于那些组的测试脚本会被运行。那些未被选中的测试脚本,或者被选中却不属于某些组的测试脚本都不会被运行。须要注意,一个测试脚本能够属于不少个组,只要有一个组被include标签标注,那么它就会被运行。若是使用了exclude标签标注某些组,那么在选择的脚本中,只有不属于那些组的测试脚本会被运行。若是同时使用了include标签和exclude标签,那么拥有被include标注的组的那些脚本会被运行,拥有被exclude标注的脚本不会被运行。有一个例外是,一个组同时被include和exclude标注了,那么拥有这个组的脚本会被运行。include和exclude标签的使用方式以下:ui
<groups> <run> <include name = "includedGroupName" /> <exclude name = "excludedGroupName" /> </run> </groups>
3.选择测试脚本能够从包、类、方法三个层级进行。spa
选择一个包:插件
<packages>
<package name="packageName" />
<packages>
选择一个类:命令行
<classes> <classe name = "className"/> <classes>
选择一个方法:code
<classes> <class name = "className" /> <methods> <include name = "methodName" /> </methods> </class> </classes>
xml文件样例
1.选择一个包中的所有测试脚本(包含子包)
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="First suite" verbose="1" >
<test name = "allTestsInAPackage" >
<packages>
<package name = "whole.path.to.package.* />
</packages>
</test>
</suite>
2.选择一个类中的所有测试脚本
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Second suite" verbose="1" >
<test name = "allTestsInAClass" >
<classes>
<class name="whole.path.to.package.className />
</classes>
</test>
</suite>
3.选择一个类中的部分测试脚本
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="Third suite" verbose="1" > <test name = "aFewTestsFromAClass" > <classes> <class name="whole.path.to.package.className > <methods> <include name = "firstMethod" /> <include name = "secondMethod" /> <include name = "thirdMethod" /> </methods> </class> </classes> </test> </suite>
4.选择一个包中的某些组
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Fourth suite" verbose="1" >
<test name = "includedGroupsInAPackage" >
<groups>
<run>
<include name = "includedGroup" />
</run>
</groups>
<packages>
<package name = "whole.path.to.package.* />
</packages>
</test>
</suite>
5.排除一个包中的某些组
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Fifth suite" verbose="1" >
<test name = "excludedGroupsInAPackage" >
<groups>
<run>
<exclude name = "excludedGroup" />
</run>
</groups>
<packages>
<package name = "whole.path.to.package.* />
</packages>
</test>
</suite>
再maven的pom.xml文件中配置testng.xml
须要在pom文件中指明testng.xml文件的位置。maven使用surefire这个插件进行测试,能够执行testng或Junit脚本。
语法为:
<suiteXmlFile>src/test/resources/testNGFilesFolder/${testNgFileName}.xml</suiteXmlFile>
<dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.8</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.19</version> <configuration> <suiteXmlFiles> <suiteXmlFile>testng.xml</suiteXmlFile>//该文件位于工程根目录时,直接填写名字,其它位置要加上路径。 </suiteXmlFiles> </configuration> </plugin> </plugins> </build>
运行测试脚本
方法一:IDEA鼠标右键testng.xml文件—>Run。
方法二:进入项目工程的根目录,使用以下命令:
mvn clean test -Dtestng.xml