TestNG-详解preserve-order的作用与测试case的执行顺序
在TestNG xml配置文件中,关于<test>
的配置里面,有一个属性叫preserve-order
,一开始以为这个属性可以用来控制测试case(那些被@Test注解标注的方法)的执行顺序,后来测试了一把,发现没有这种效果,最后上网找了一下这个属性的作用,发现它是用来控制<test>
里面所有<classes>
的执行顺序的。<test>
默认下的preserve-order
为true
,表示<test>
下所有<classes>
顺序执行,eg:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Preserve order test runs"> <test name="Regression 1" preserve-order="true"> <classes> <class name="com.pack.preserve.ClassOne"/> <class name="com.pack.preserve.ClassTwo"/> <class name="com.pack.preserve.ClassThree"/> </classes> </test> </suite>
会依次执行ClassTwo
、ClassThree
、ClassOne
的测试方法。
【注意】 一个<class>
类里面可能存在多个测试方法(被@Test注解的方法),这些方法的执行顺序不受preserve-order
控制。默认测试方法的执行顺序是按照方法名的字典序升序排序执行的。
那么,对于需要按照一定顺序执行测试方法的需求,我们应该如何实现?
有以下几种做法:
(1) 使用priority
指定执行顺序(默认值为0),数值越小,越靠前执行
eg:
@Test(priority = 0)
public void testMethod1() { } @Test(priority = 1) public void testMethod2() { } @Test(priority = 2) public void testMethod3() { }
这样指定以后,将按照testMethod1
、testMethod2
、testMethod3
顺序执行。
我们不推荐使用这种方式来指定测试方法的执行顺序。因为当你中间需要修改执行顺序的时候,会相当麻烦。而且,多个
<class>
的测试方法,如果指定了相同的priority
,那么会产生与预期不一样的执行顺序,TestNG会先跑所有相同priority
的测试方法,而不管你的测试方法是不是在同一个<class>
里面。
(2) 从方法名称做手脚
因为默认执行顺序是按照方法名的字典序升序排序执行的。那么,有目的地去定制方法名称,就可以让方法按照我们要求的顺序执行,比如:
@Test
public void B() {
}@Test public void A() { } @Test public void C() { }
这样方法就会按照A
、B
、C
顺序执行。
这种方式使得我们命名测试方法名称更加费劲,也不是最优的解决方案。
(3) 在xml里面使用<include>
指定需要执行的方法和顺序
比如:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Preserve order test runs"> <test name="Regression 1" preserve-order="true"> <classes> <class name="com.pack.preserve.ClassOne"> <methods> <include name="B" /> <include name="A" /> </methods> </class> </classes> </test> </
如上配置,ClassOne
会执行两个测试方法,先执行B
,然后执行A
。
我们推荐使用这种方式来指定方法的执行顺序,因为这是最灵活并且最直观的。
转载于:https://www.cnblogs.com/AryaZ/p/7192241.html
TestNG-详解preserve-order的作用与测试case的执行顺序相关推荐
- meta标签详解(meta标签的作用)///////////////////////////转
meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧 您的 ...
- 详解C调用lua脚本效率测试
详解C调用lua脚本效率测试 C调用lua脚本效率测试是本文要介绍的内容,以下代码以C语言为基准,测试了C调用Lua循环和循环调用Lua的效率.结论是不要频繁地穿越C/Lua边界. #include ...
- java 日志 异步_log4j 详解异步日志的配置和测试
log4j 详解异步日志的配置和测试 日志可以帮助我们分析故障原因,做些数据挖掘的工作.最简单的日志方法,就是自己写个写文件的方法,在需要打日志的时候调用下,但是这显然不可能在实际工程上用.还有个问题 ...
- 【04Vue3 目录结构】VUE3目录结构概述结构详解目录结构的作用注意事项
Vue3 目录结构教程 目录结构概述 在 Vue3 项目中,通常采用以下目录结构组织代码: ├── public│ └── index.html├── src│ ├── assets│ ├── com ...
- Java自动化用例管理利器-TestNG详解
TestNG是开源自动化测试工具,覆盖多类型测试:单元测试,功能测试,集成测试,它的功能非常强大 支持多种类型的单元测试(异常测试, 超时测试,依赖测试-.) 支持参数化 & 提供了丰富的测试 ...
- TestNG详解-深度好文
1. 介绍 TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试 ...
- 测试安装详解_Linux的/opt目录(测试实用篇)
在linux环境测试时,会部署到/opt目录下,这是为何呢? 下面来详解Linux的/opt目录: -------------------------------------------------- ...
- mysql: order by, group by ,having, select, where 执行 顺序
where:数据库中常用的是where关键字,用于在初始表中筛选查询.它是一个约束声明,用于约束数据,在返回结果集之前起作用. group by:对select查询出来的结果集按照某个字段或者表达式进 ...
- 把 Spring Cloud 给拆了!详解每个组件的作用
点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 我们先认识一下SpringC ...
最新文章
- Quartz.Net 1.30的一些设置说明
- c# 变量,对象,静态类型,集合类的线程安全回顾
- 放弃Windows,用国产开源替换政府办公系统!这个国家做到了
- []End of 2017OI
- P5887-Ringed Genesis【GCD】
- Angular Service
- 使用with关键字让你的Python代码更加Pythonic
- python与机器学习(六)——支持向量机(SVM) 多层感知机(MLP)
- ssas 分层维度_如何在SSAS多维中使用分区来优化维度安全性能
- 统计模型混响信号预报matlab,基于MATLAB的混响效果设计课程设计
- 基于ZigBee的出租车调度系统
- AI高考的信息检索策略
- #Paper Reading# Gradient Harmonized Single-stage Detector
- AcWing 1089 烽火传递 题解(动态规划—DP—单调队列优化DP)
- 防火墙架构及CC***
- Dagger2 简介
- 信息学奥赛真题解析(笨鸟)
- 基于《PythonCookbook》的学习(2)——在字符串的卡头或结尾做文本匹配
- JAVA面向对象程序设计-FeiGe快递系统-继承III
- Java、JSP基于JavaEE的家庭影院系统
热门文章
- android调用fragment的方法,AndroidX下使用Activity和Fragment的变化
- Linux版本Oracle工具,Linux下oracle可视化操作工具sqldeveloper安装与配置
- 将单向链表按某值划分成左边小、 中间相等、 右边大的形式~迎娶是挺
- 计算机专业能评电子工程师吗,计算机工程师职称 评定条件
- hyper-v虚拟服务器内存满了,在Hyper-V Dynamic Memory里设置虚拟内存
- mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)
- arthas 查看哪个方法调用最耗时_阿里巴巴问题排查神器Arthas使用实践
- c语言未声明的标识符什么意思_C语言中%d和%f是什么意思啊?
- Python数模笔记-Sklearn(2)聚类分析
- php数组里面写路径,使用路径在PHP数组中进行递归搜索