文档章节

深入探索:单元测试之测试执行顺序

灯-塔
 灯-塔
发布于 2017/09/10 21:57
字数 699
阅读 63
收藏 0
点赞 0
评论 0

测试执行顺序

由于设计原因,JUnit不会特别指定测试方法调用的执行顺序。到目前为止,这些方法只是按照反射API返回的顺序调用的。然而,使用JVM 的指令顺序返回是一种不太明智的做法。因为JVM平台也是没有指定任何特定的顺序,其实JDK 返回或多或少是有点随机性的。当然,一个好的测试方法是不会假设有任何的顺序的,但是,有些时候,我们对业务测试会有这样的需求的,不能随机而来。毕竟,可预见的故障比某些平台上的随机故障要好,随机意味着故障将有很大的不确定和难排查性。 从JUnit4.11 开始,JUnit将默认使用一个确定性的,但不可预测的顺序。(MethodSorters.DEFAULT), 改变测试方法的执行顺序,只需要用**@FixMethodOrder** 注解到你的测试类中,以及一个可用的测试方法排序方式就好, 如:

  • @FixMethodOrder(MethodSorters.JVM) :这样就是按照JVM返回的顺序留下测试方法。此Order可能因运行而异(机器不同可能有差异)
  • **@FixMethodOrder(MethodSorters.NAME_ASCENDING) ** :按各种测试方法的方法的名称,在字典序(按测试方法的字母来)。

举例

import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestMethodOrder {

    @Test
    public void testA() {
        System.out.println("first");
    }
    @Test
    public void testB() {
        System.out.println("second");
    }
    @Test
    public void testC() {
        System.out.println("third");
    }
}

执行结果:

first
second
third
  • 无论我把A B C 这三个方法如何打乱,都是这个结果,按字母升序来执行。
  • 如果是按JVM来,你多执行几次,就发现会有很大的随机性。
  • 如果是默认方法,那么顺序是可以确定的,但是执行过程就是不可以预见的。

© 著作权归作者所有

共有 人打赏支持
灯-塔
粉丝 2
博文 39
码字总数 63914
作品 0
广州
程序员
测试基础介绍

迅速找出重要程序问题 1.首先测试经过变更的部分,然后测试没有变化的部分,修改和更改都意味着新的风险 2.首先测试核心功能,然后测试辅助功能,测试产品所完成的关键和常用功能,测试完成产...

测试猴
01/02
0
0
Gradle tip #3-Task顺序

原文链接 我注意到我在使用Gradle的时候遇到的大多数问题都是和task的执行顺序有关的。很明显如果我的构建会工作的更好如果我的task都是在正确的时候执行。下面我们就深入了解一下如何更改t...

一配
2015/09/21
242
0
赵勇奎/OCUnitPlus

###什么是OCUnitPlus OCUnitPlus是一个扩展OCUnit的项目,Xcode自带的单元测试框架使用的开源项目OCUnit,但是OCUnit的功能比较简单,不支持诸如异步模型、执行顺序等功能。 ###OCUnitPlus的...

赵勇奎
2013/08/21
0
0
测试你的前端代码 - part1(介绍篇)

本文作者:Gil Tayar 编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58d3dcb87413fc2e8240855a 英文连接:Testing Your Frontend Code : Part I (Introduction......

胡子大哈
2017/03/23
0
0
网易云课堂-软件测试方法和技术实践

网易云课程-软件测试方法和技术实践 软件测试方法和内容: 单元测试、持续集成、系统测试、验收测试 测试计划、设计、执行,自动化测试 敏捷测试、探索式测试等 全程软件测试: 需求评审->设...

xjhznick
2015/03/06
0
0
Delphi initialization和finalization

1 initialization和finalization 测试办法:启动一个控制台程序,因为一般的application有太多的单元引用,可能会造成一些调试上的麻烦 经过测试,大致结果可能是这样的 加载顺序与project及...

geek_loser
2014/11/21
0
0
Visual Studio 11开发指南(8)Visual C++ 11新特色

Metro界面的开发模板 新增了驱动开发支持 改进的C++ 11标准的支持 -------------------------------------------------- ------------------------------ 标准模板库 作为在Visual Studio 1...

junwong
2012/03/09
0
0
Java 单元测试及JUnit的使用

Java 单元测试: 单元测试是开发者编写的一小段代码,用于检测被测代码的一个很小的、很明确的功能是否正确。 单元测试的方法: 人工静态分析:人工阅读检测代码 自动静态分析:使用代码复查...

醉风林天
2017/05/09
0
0
Junit--按照顺序执行测试用例

有时候我们需要按照顺序执行我们的单元测试方法,如在测试Dao层的时候要按照测试插入方法、查询方法、更新方法、删除方法的顺序测试。 因为用到了Spring所以需要将Runner指定为SpringJUnit4C...

Canaan_
2016/08/27
11
0
Junit注解

注解 @Before 初始化方法 @After 释放资源 @Test 测试方法,在这里可以测试期望异常和超时时间 @Ignore 忽略的测试方法 @BeforeClass 针对所有测试,只执行一次,且必须为static void @Afte...

Canaan_
2016/08/27
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Mybatis收集配置

一、Mybatis取Clob数据 1、Mapper.xml配置 <resultMap type="com.test.User" id="user"> <result column="id" property="id"/> <result column="json_data" property="jsonData" ......

星痕2018
16分钟前
0
0
centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
48分钟前
0
0
OSChina 周日乱弹 —— 红薯,五年间我对你不离不弃

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ andonny :分享周二珂的单曲《孤独她呀》 《孤独她呀》- 周二珂 手机党少年们想听歌,请使劲儿戳(这里) @孤星闵月 :没事干,看一遍红楼梦...

小小编辑
53分钟前
127
8
Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式 Factory工厂模式 Singleton单例模式 Delegate委派模式 Strategy策略模式 Prototype原型模式 Template模板模式 Spring5 beans 接口实例化 代理Bean操作 ...

小致dad
今天
0
0
SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
10
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
17
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
245
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部