简单介绍

运行TestNG测试脚本有两种方式:一种是直接通过IDE运行(例如使用eclipse中的“Run TestNG tests”),另一种是从命令行运行(通过使用xml配置文件)。当我们想执行某个包或者某个类中的一部分测试脚本的时候,使用xml配置文件是非常便利的。在xml配置文件里,不仅可以选择某些需要执行的测试脚本,还可以排除某些不需要运行的测试脚本。

创建testng.xml文件

创建xml文件很容易,只需要在其中填充一些内容。

1)首先要声明一个suite的名字,用于描述将要运行的测试脚本集,可以根据自己需要任意命名,最终这个名字会在testng的测试报告中看到。

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="SuiteName" verbose="1" >
<test name="TestName" >

2)如果选择的测试脚本是基于组的(使用了@Test (groups={"student"})这样的注解),那么接下来需要声明如何使用这些组:包含或者排除。如果使用了include标签标注某些组,那么在选择的测试脚本中,只有属于那些组的测试脚本会被运行。那些未被选中的测试脚本,或者被选中却不属于某些组的测试脚本都不会被运行。需要注意,一个测试脚本可以属于很多个组,只要有一个组被include标签标注,那么它就会被运行。如果使用了exclude标签标注某些组,那么在选择的脚本中,只有不属于那些组的测试脚本会被运行。如果同时使用了include标签和exclude标签,那么拥有被include标注的组的那些脚本会被运行,拥有被exclude标注的脚本不会被运行。有一个例外是,一个组同时被include和exclude标注了,那么拥有这个组的脚本会被运行。include和exclude标签的使用方式如下:

<groups>
<run>
<include name = "includedGroupName" />
<exclude name = "excludedGroupName" />
</run>
</groups>

3)选择测试脚本可以从包、类、方法三个层级进行。

选择一个包

<packages>
<package name = "packageName" />
</packages>

选择一个类

<classes>
<class name = "className" />
</classes>

选择一个方法

<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>

运行测试脚本

方法一:在IDE,例如IntellJ IDEA中,鼠标右击testng.xml文件,选择run即可。

方法二:进入到项目工程的根目录,使用 mvn clean test -Dtestng.xml 命令,结果如下:

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building ArtifactIdWang 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
.
.
.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestSuite
now start test
Test started runningtemplistener1at:
i'm listenerTest1
Result success
Test started runningtemplistener2at:
i'm listenerTest2
Result success
now finish test
Tests run: , Failures: , Errors: , Skipped: , Time elapsed: 7.125 sec - in TestSuite Results : Tests run: , Failures: , Errors: , Skipped: [INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: : min
[INFO] Finished at: --15T10::+:
[INFO] Final Memory: 22M/182M
[INFO] ------------------------------------------------------------------------

最新文章

  1. Maximum Depth of Binary Tree
  2. mac下搭建lua环境
  3. ReactiveCocoa入门教程:第二部分
  4. strcpy  复制字符串函数
  5. [物理学与PDEs]第5章习题参考解答
  6. 使用TypeScript如何提升JavaScript编程效果?
  7. JavaScript高级---桥模式设计
  8. ECshop 二次开发模板教程2
  9. 关于WCF在IIS8注册的问题
  10. Windows 7 下 PHP 开发环境搭建(手动)
  11. 纯js实现html转pdf
  12. 【初码干货】记一次分布式B站爬虫任务系统的完整设计和实施
  13. 如何禁用 .net reflector
  14. Python之数据类型转换
  15. 缓存系列之三:redis安装及基本数据类型命令使用
  16. 框架中如何根据fileupload工具包实现文件上传功能
  17. PyQT5 No module named ‘PyQt5.QtWebEngineWidgets’
  18. windows平台mysql密码破解设置
  19. DNS中A记录和CNAME记录的区别(转)
  20. windows 2016 容器管理

热门文章

  1. TCP/IP详解读书笔记:ARP-地址解析协议
  2. nginx 为什么要反向代理 影藏后端 高效连接(给nginx,他自己返回) 端口冲突解决 多个服务
  3. 请说明meta标签的作用。
  4. mysq for visual studio 1.1.1
  5. 蓝桥杯 第三届C/C++预赛真题(3) 比酒量(数学题)
  6. Android显示全局Dialog
  7. 数据库设计——E-R图
  8. 【转】Linux下mysql操作
  9. C#中引用类型和值类型分别有哪些
  10. Android 4.4 (KitKat) SMS Apis Change——Android 4.4的一个重大变化