TestNG提供的annotaions用来辅助定义测试类。

TestNG的testng.xml配置文件用来辅助定义执行什么样的测试,即testng.xml更像是一个测试规划。

testng.xml配置文件的元数据引用http://testng.org/testng-1.0.dtd,其中定义了testng.xml中的元素、属性和顺序等。

1.<suite>

<suite>元素是testng.xml文件的根元素。

从DTD文件(如下所示)可以看出,<suite>可以包含一个<groups>元素,用以定义全局的组,该组对所有的测试可见。

<suite>可以包含多个<test>元素,一个<test>就定义了一个测试用例(其中可能包含多个测试方法)。

示例如下:

  1. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
  2. <suite name="Suite1" verbose="1" >
  3. <groups>
  4. <run>
  5. <include name="..." />
  6. <exclude name="..." />
  7. </run>
  8. </groups>
  9. <test name="Regression1">
  10. ...
  11. </test>
  12. </suite>

2.<test>

<test>元素是<suite>的子元素,用以定义一个测试用例。定义测试用例可以通过<classes>或<packages>。

1). <classes>表示以测试类的方式定义测试用例,粒度较小。示例如下:

  1. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
  2. <suite name="Suite1" verbose="1" >
  3. <test name="Regression1">
  4. <classes>
  5. <class name="test.sample.ParameterSample"/>
  6. <class name="test.sample.ParameterTest"/>
  7. </classes>
  8. </test>
  9. </suite>

2). <packages>表示以测试类所在的包的方式定义测试用例,包中的所有测试类都被涉及,粒度较大。

  1. <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
  2. <suite name="Suite1" verbose="1" >
  3. <test name="Regression1"   >
  4. <packages>
  5. <package name="test.sample" />
  6. </packages>
  7. </test>
  8. </suite>

3). <test>元素中的<groups>元素

我们知道,<suite>中可以定义一个全局的<groups>。而这里<test>元素中也可以定义一个自己的<groups>,其中定义的组仅对当前所在的测试用例可见。示例如下:

  1. <test name="Regression1">
  2. <groups>
  3. <run>
  4. <exclude name="brokenTests"  />
  5. <include name="checkinTests"  />
  6. </run>
  7. </groups>
  8. <classes>
  9. ...
  10. </classes>
  11. </test>

注意:在testng.xml配置文件中,<suite>中可以定义多个<test>,那么这些<test>的执行顺序默认按照其在<suite>中出现的先后顺序。当然,也可以提供<test>的preserve-order='false'改变默认顺序。

3. <classes>

<test>可以通过<classes>或<packages>定义测试用例,但只是在测试类或类包的层次上,那么能不能具体到测试类的某个方法呢?

  1. <test name="Regression1">
  2. <classes>
  3. <class name="test.Test1">
  4. <methods>
  5. <include name="m1" />
  6. <include name="m2" />
  7. </methods>
  8. </class>
  9. <class name="test.Test2" />
  10. </classes>
  11. </test>

对于<classes>中的一个<class>,可以提供<methods>设置测试方法。示例如下:

最新文章

  1. C语言语法 typedef小结
  2. 制作动画或小游戏——CreateJS基础类(一)
  3. android-ImageView及其子类
  4. linux库列表
  5. 【C#】【MySQL】C# 查询数据库语句@Row:=@Row+1
  6. spring注解 构造函数问题
  7. codeforces 704B - Ant Man 贪心
  8. hbase namespace问题
  9. Django之路:QuerySet API,后台和表单
  10. flex控件总结
  11. iOS之 Auto Layout
  12. vue-cli脚手架的环境搭建
  13. 【PYTHON】递加计数器
  14. 读取txt内文件内容
  15. python 爬虫-1
  16. SQL Server中比较末尾带有空格的字符串遇到的坑 (转载)
  17. [Web安全] XXE漏洞攻防学习(中)
  18. GameObject.Find与Transform.Find的区别
  19. 使用 loki grafana 分析nginx 请求日志
  20. HTTPS那些事(三)攻击实例与防御

热门文章

  1. SpringMVC多个拦截器
  2. C#使用Newtonsoft.Json操作json
  3. eval实例
  4. mysql死锁问题解决
  5. 【Java】Observer Pattern
  6. vue_cli下开发一个简单的模块权限系统之建立登录页面并且实现在浏览器输入地址出现内容
  7. Shell脚本标准
  8. p2p-如何拯救k8s镜像分发的阿喀琉斯之踵?
  9. Python-6-字典-函数dict,字典的基本操作及将字符串设置功能用于字典
  10. Ubuntu 16.04设置root用户登录图形界面