JUnit中按照顺序执行测试方式

很多情况下,写了一堆的test case,希望某一些test case必须在某个test case之后执行。比如,测试某一个Dao代码,希望添加的case在最前面,然后是修改或者查询,最后才是删除,以前的做法把所有的方法都集中到某一个方法去执行,一个个罗列好,比较麻烦。比较幸福的事情就是JUnit4.11之后提供了MethodSorters,可以有三种方式对test执行顺序进行指定,如下:


/**

* Sorts the test methods by the method name, in lexicographic order, with {@link Method#toString()} used as a tiebreaker

*/

NAME_ASCENDING(MethodSorter.NAME_ASCENDING),

/**

* Leaves the test methods in the order returned by the JVM. Note that the order from the JVM may vary from run to run

*/

JVM(null),

/**

* Sorts the test methods in a deterministic, but not predictable, order

*/

DEFAULT(MethodSorter.DEFAULT);

  可以小试牛刀一下:

  使用DEFAULT方式:


package com.netease.test.junit;

import org.apache.log4j.Logger;

import org.junit.FixMethodOrder;

import org.junit.Test;

import org.junit.runners.MethodSorters;

/**

* User: hzwangxx

* Date: 14-3-31

* Time: 15:35

*/

@FixMethodOrder(MethodSorters.DEFAULT)

public class TestOrder {

private static final Logger LOG = Logger.getLogger(TestOrder.class);

@Test

public void testFirst() throws Exception {

LOG.info("------1--------");

}

@Test

public void testSecond() throws Exception {

LOG.info("------2--------");

}

@Test

public void testThird() throws Exception {

LOG.info("------3--------");

}

}

/*

output:

2014-03-31 16:04:15,984 0    [main] INFO  - ------1--------

2014-03-31 16:04:15,986 2    [main] INFO  - ------3--------

2014-03-31 16:04:15,987 3    [main] INFO  - ------2--------

*/

换成按字母排序


package com.netease.test.junit;

import org.apache.log4j.Logger;

import org.junit.FixMethodOrder;

import org.junit.Test;

import org.junit.runners.MethodSorters;

/**

* User: hzwangxx

* Date: 14-3-31

* Time: 15:35

*/

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

public class TestOrder {

private static final Logger LOG = Logger.getLogger(TestOrder.class);

@Test

public void testFirst() throws Exception {

LOG.info("------1--------");

}

@Test

public void testSecond() throws Exception {

LOG.info("------2--------");

}

@Test

public void testThird() throws Exception {

LOG.info("------3--------");

}

}

/*

2014-03-31 16:10:25,360 0    [main] INFO  - ------1--------

2014-03-31 16:10:25,361 1    [main] INFO  - ------2--------

2014-03-31 16:10:25,362 2    [main] INFO  - ------3--------

*/

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-12-23 22:25:49

JUnit中按照顺序执行测试方式的相关文章

Selenium执行测试脚本稳定性的一些经验分享交流

关于工作中使用Selenium执行测试脚本稳定性的一些经验分享 公司的自动化WEB测试框架IATA已上线运行了一段时间,期间发现一些脚本稳定性的问题,与大家分享一下. CASE执行游览器:ie firefox chrome 稳定性问题 一.在持续执行WEB自动化的过程中,如需持续执行脚本,比如持续跑脚本24小时,48小时,甚至一周时间.测试CASE会间歇性发生持续加载页面无响 应的情况.此现象发生后,测试CASE就会因为持续加载页面这个动作而无响应.后续CASE也不会执行直到当前人为手工解决当前

sqlserver-左连接条件的执行顺序? 测试中,300条数据成功,700条数据出错(substring不能为空)

问题描述 左连接条件的执行顺序? 测试中,300条数据成功,700条数据出错(substring不能为空) select *from tb1left join tb2on tb1.str != nulland substring(str 0 2) = tb2.str. 解决方案 on tb1.str is not nulland tb2.str is not nulland substring(tb1.str 0 2) = tb2.str.

jquery中的ajax如何返回结果而非回调方式即为同顺序执行_AJAX相关

因为默认ajax是异步的,也就是在未响应到结果时不影响向下的执行.所以必须采用回调的方式来实现.这种方案效率更高. 如果非要返回结果的话,将ajax 中的参数 async 改为 false,即为同顺序执行,如下实现,即可返回到结果. 不过在非必要的情况下,不推荐此种做法 复制代码 代码如下: function(url,params){ var outdata; $.ajax({ type : "get", async:false, dataType:"json",

jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序_jquery

jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend(局部事件) 3.ajaxSend(全局事件) 4.success(局部事件) 5.ajaxSuccess(全局事件) 6.error(局部事件) 7.ajaxError (全局事件) 8.complete(局部事件) 9.ajaxComplete(全局事件) 10.ajaxStop(全局事件) 其中,全局事件可以在ajax相关方法外引用(比如,通过该方式将ajax执行各个阶段的信息显示在页面某个地

jquery中的ajax如何返回结果而非回调方式即为同顺序执行

因为默认ajax是异步的,也就是在未响应到结果时不影响向下的执行.所以必须采用回调的方式来实现.这种方案效率更高. 如果非要返回结果的话,将ajax 中的参数 async 改为 false,即为同顺序执行,如下实现,即可返回到结果. 不过在非必要的情况下,不推荐此种做法 复制代码 代码如下: function(url,params){ var outdata; $.ajax({ type : "get", async:false, dataType:"json",

JUnit中的测试套件和参数化测试

JUnit4.x的测试运行器 JUnit为单元测试提供了默认的测试运行器,它的测试方法都是由它负责执行的 我们也可以定制自己的运行器,所有的运行器都继承自org.junit.runner.Runner 还可以使用org.junit.runer.RunWith注解 为每个测试类指定使用具体的运行器 一般情况下,默认测试运行器可以应对绝大多数的单元测试要求 当使用JUnit提供的一些高级特性,或者针对特殊需求定制JUnit测试方式时 显式的声明测试运行就必不可少了 JUnit4.x测试套件的创建步骤

jsp页面中的代码执行加载顺序介绍

 本篇文章主要是对jsp页面中的代码执行加载顺序进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1. java是在服务器端运行的代码,jsp在服务器的servlet里运行,而javascript和html都是在浏览器端运行的代码.所以加载执行顺序是是java>jsp>js.   2. js在jsp中的加载顺序   页面上的js代码时html代码的一部分,所以页面加载的时候是由上而下加载.所以js加载的顺序也就是页面中<script>标签出现的顺序.<scrip

jquery中ajax函数执行顺序问题之如何设置同步

 这篇文章主要介绍了jquery中ajax函数执行顺序问题之如何设置同步,需要的朋友可以参考下 JavaScript code  代码如下: function existProduct(obj){    var productname = escape(obj.val());  $.getJSON("../product/searchProductByName.action",datat,function(data){  var falg;  falg = data[0]['exist

bios-BIOS中Peim的执行顺序?

问题描述 BIOS中Peim的执行顺序? BIOS中Peim模块具体是怎么调用的,执行顺序是怎么样的? 解决方案 阿里面试题:关于类中静态,非静态,构造方法的执行顺序