在TestNG xml配置文件中,关于<test>的配置里面,有一个属性叫preserve-order,一开始以为这个属性可以用来控制测试case(那些被@Test注解标注的方法)的执行顺序,后来测试了一把,发现没有这种效果,最后上网找了一下这个属性的作用,发现它是用来控制<test>里面所有<classes>的执行顺序的。<test>默认下的preserve-ordertrue,表示<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>

会依次执行ClassTwoClassThreeClassOne的测试方法。

【注意】 一个<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() { } 

这样指定以后,将按照testMethod1testMethod2testMethod3顺序执行。

我们不推荐使用这种方式来指定测试方法的执行顺序。因为当你中间需要修改执行顺序的时候,会相当麻烦。而且,多个<class>的测试方法,如果指定了相同的priority,那么会产生与预期不一样的执行顺序,TestNG会先跑所有相同priority的测试方法,而不管你的测试方法是不是在同一个<class>里面。

(2) 从方法名称做手脚

因为默认执行顺序是按照方法名的字典序升序排序执行的。那么,有目的地去定制方法名称,就可以让方法按照我们要求的顺序执行,比如:

@Test
public void B() {
}@Test public void A() { } @Test public void C() { }

这样方法就会按照ABC顺序执行。

这种方式使得我们命名测试方法名称更加费劲,也不是最优的解决方案。

(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的执行顺序相关推荐

  1. meta标签详解(meta标签的作用)///////////////////////////转

    meta标签详解(meta标签的作用) 很多人却忽视了HTML标签META的强大功效,一个好的META标签设计可以大大提高你的个人网站被搜索到的可能性,有兴趣吗,谁我来重新认识一下META标签吧 您的 ...

  2. 详解C调用lua脚本效率测试

    详解C调用lua脚本效率测试 C调用lua脚本效率测试是本文要介绍的内容,以下代码以C语言为基准,测试了C调用Lua循环和循环调用Lua的效率.结论是不要频繁地穿越C/Lua边界. #include  ...

  3. java 日志 异步_log4j 详解异步日志的配置和测试

    log4j 详解异步日志的配置和测试 日志可以帮助我们分析故障原因,做些数据挖掘的工作.最简单的日志方法,就是自己写个写文件的方法,在需要打日志的时候调用下,但是这显然不可能在实际工程上用.还有个问题 ...

  4. 【04Vue3 目录结构】VUE3目录结构概述结构详解目录结构的作用注意事项

    Vue3 目录结构教程 目录结构概述 在 Vue3 项目中,通常采用以下目录结构组织代码: ├── public│ └── index.html├── src│ ├── assets│ ├── com ...

  5. Java自动化用例管理利器-TestNG详解

    TestNG是开源自动化测试工具,覆盖多类型测试:单元测试,功能测试,集成测试,它的功能非常强大 支持多种类型的单元测试(异常测试, 超时测试,依赖测试-.) 支持参数化 & 提供了丰富的测试 ...

  6. TestNG详解-深度好文

    1. 介绍     TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试 ...

  7. 测试安装详解_Linux的/opt目录(测试实用篇)

    在linux环境测试时,会部署到/opt目录下,这是为何呢? 下面来详解Linux的/opt目录: -------------------------------------------------- ...

  8. mysql: order by, group by ,having, select, where 执行 顺序

    where:数据库中常用的是where关键字,用于在初始表中筛选查询.它是一个约束声明,用于约束数据,在返回结果集之前起作用. group by:对select查询出来的结果集按照某个字段或者表达式进 ...

  9. 把 Spring Cloud 给拆了!详解每个组件的作用

    点击上方 好好学java ,选择 星标 公众号重磅资讯,干货,第一时间送达 今日推荐:推荐19个github超牛逼项目!个人原创100W +访问量博客:点击前往,查看更多 我们先认识一下SpringC ...

最新文章

  1. Quartz.Net 1.30的一些设置说明
  2. c# 变量,对象,静态类型,集合类的线程安全回顾
  3. 放弃Windows,用国产开源替换政府办公系统!这个国家做到了
  4. []End of 2017OI
  5. P5887-Ringed Genesis【GCD】
  6. Angular Service
  7. 使用with关键字让你的Python代码更加Pythonic
  8. python与机器学习(六)——支持向量机(SVM) 多层感知机(MLP)
  9. ssas 分层维度_如何在SSAS多维中使用分区来优化维度安全性能
  10. 统计模型混响信号预报matlab,基于MATLAB的混响效果设计课程设计
  11. 基于ZigBee的出租车调度系统
  12. AI高考的信息检索策略
  13. #Paper Reading# Gradient Harmonized Single-stage Detector
  14. AcWing 1089 烽火传递 题解(动态规划—DP—单调队列优化DP)
  15. 防火墙架构及CC***
  16. Dagger2 简介
  17. 信息学奥赛真题解析(笨鸟)
  18. 基于《PythonCookbook》的学习(2)——在字符串的卡头或结尾做文本匹配
  19. JAVA面向对象程序设计-FeiGe快递系统-继承III
  20. Java、JSP基于JavaEE的家庭影院系统

热门文章

  1. android调用fragment的方法,AndroidX下使用Activity和Fragment的变化
  2. Linux版本Oracle工具,Linux下oracle可视化操作工具sqldeveloper安装与配置
  3. 将单向链表按某值划分成左边小、 中间相等、 右边大的形式~迎娶是挺
  4. 计算机专业能评电子工程师吗,计算机工程师职称 评定条件
  5. hyper-v虚拟服务器内存满了,在Hyper-V Dynamic Memory里设置虚拟内存
  6. mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)
  7. arthas 查看哪个方法调用最耗时_阿里巴巴问题排查神器Arthas使用实践
  8. c语言未声明的标识符什么意思_C语言中%d和%f是什么意思啊?
  9. Python数模笔记-Sklearn(2)聚类分析
  10. php数组里面写路径,使用路径在PHP数组中进行递归搜索