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。
我们推荐使用这种方式来指定方法的执行顺序,因为这是最灵活并且最直观的。
TestNG-详解preserve-order的作用与测试case的执行顺序的更多相关文章
- meta标签详解(meta标签的作用)///////////////////////////转
meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧 ...
- TestNG详解-深度好文
转自: https://blog.csdn.net/lykangjia/article/details/56485295 TestNG详解-深度好文 2017年02月22日 14:51:52 阅读数: ...
- 详解package-lock.json的作用
目录 详解package-lock.json package-lock.json的作用 版本号的定义规则与前缀对安装的影响 改动package.json后依旧能改变项目依赖的版本 当前项目的真实版本号 ...
- TestNG详解(单元测试框架)
一.TestNG的优点 1.1 漂亮的HTML格式测试报告 1.2 支持并发测试 1.3 参数化测试更简单 1.4 支持输出日志 1.5 支持更多功能的注解 二.编写TestNG测试用例的步骤 2.1 ...
- 【原创】Junit4详解二:Junit4 Runner以及test case执行顺序和源代码理解
概要: 前一篇文章我们总体介绍了Junit4的用法以及一些简单的测试.之前我有个疑惑,Junit4怎么把一个test case跑起来的,在test case之前和之后我们能做些什么? Junit4执行 ...
- 一篇看懂JVM底层详解,利用class反编译文件了解文件执行流程
JVM之内存结构详解 JVM内存结构 java虚拟机在执行程序的过程中会将内存划分为不同的区域,具体如图1-1所示. 五个区域 JVM分为五个区域:堆.虚拟机栈.本地方法栈.方法区(元空间).程序计数 ...
- 18个示例详解 Spring 事务传播机制(附测试源码)
什么是事务传播机制 事务的传播机制,顾名思义就是多个事务方法之间调用,事务如何在这些方法之间传播. 举个例子,方法 A 是一个事务的方法,方法 A 执行的时候调用了方法 B,此时方法 B 有无事务以及 ...
- web.xml配置详解 (及<context-param>配置作用 )
http://blog.csdn.net/guihaijinfen/article/details/8363839 <context-param>配置作用 http://blog.csdn ...
- 自动化测试框架selenium+java+TestNG——TestNG详解
TestNG按顺序执行case package com.testngDemo; import org.testng.annotations.AfterClass; import org.testng. ...
随机推荐
- windows 开启热点的命令行工具
hotspot.bat @echo off @echo. setlocal enabledelayedexpansion if "%1" == "set" ( ...
- thymeleaf 标签的使用
1.html页面 2.<label class="control-label col-sm-1" for="vehiclesFormalities"> ...
- TOP100summit:【分享实录-美团点评】 业务快速升级发展背后的系统架构演进
本篇文章内容来自2016年TOP100summit美团●大众点评高级技术专家,酒店后台研发组eHome团队负责人许关飞的案例分享.编辑:Cynthia 许关飞:美团●大众点评高级技术专家,酒店后台研发 ...
- [No0000142]Outlook通过添加签名 自动添加邮件模板
新建邮件->alt+F9切换域代码显示. 编写好模板后,全选复制到签名. 2018/05/7_加班申请_高亚斌 工号 姓名 开始时间 结束时间 工作事项 160227 高亚斌 2018/05/7 ...
- TensorRT下安装pycuda
为了模型小型化,效率更高,使用TensorRT进行优化.前提是你必须要安装pycuda,可是费了我一番功夫.做一个笔记如下: 1.参考网址: https://wiki.tiker.net/PyCuda ...
- sess.run(tf.global_variables_initializer()) 做了什么?
当我们训练自己的神经网络的时候,无一例外的就是都会加上一句 sess.run(tf.global_variables_initializer()) ,这行代码的官方解释是 初始化模型的参数.那么,它到 ...
- /etc/apt/sources.list" E212: Can't open file for writing解决方案
:w !sudo tee % > /dev/null 解决.
- cocoapods 无法 升级 repo 无法执行pod install命令
首先MAC自带了ruby,他是用rvm 管理的, 如果你用homebrew又安装了一个新版,很可能在升级cocoapods时遇到问题,明明自己用homebrew升级到最新版本了,页配置环境变量了,为什 ...
- [ovs] openvswitch 入门
https://www.sdnlab.com/sdn-guide/14747.html http://sdnhub.cn/index.php/openv-switch-full-guide/ http ...
- ms sql server读取xml文件存储过程-sp_xml_preparedocument
最近要在存储过程中读取xml中节点的值,然后进行sql操作: 要使用到的系统存储过程如下:sp_xml_preparedocument create procedure [dbo].[pro_Test ...