码迷,mamicode.com
首页 > 其他好文 > 详细

Test execution order

时间:2015-07-11 14:52:16      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

刚开始的时候,JUnit并没有规定测试方法的调用执行顺序。方法通过映射的API返回的顺序进行调用。然 而,使用JVM顺序是不明智的,因为Java平台没有规定任何特定的顺序,事实上JDK7或多或少的返回的是随机顺序。大部分写的好的测试代码不会假定一 个顺序,在特定的平台上一个可预言的失败比一个随机的失败更好。

从4.11版本开始,如果想要改变测试执行顺序,只要简单的加一个 @FixMethodOder 注释就可以。

目前比较常见的有三种:

@FixMethodOrder(MethodSorters.DEFAULT):默认顺序。由方法名的哈希码值决定执行顺序。由于哈希码的生成和OS有关,所以不用的OS可能会出现不一样的执行顺序。在某一操作系统上,多次执行的顺序不变。

@FixMethodOrder(MethodSorters.JVM):由JVM来决定执行顺序。当然执行顺序随着每一次的测试可能会有所不用。

@FixMethodOrder(MethodSorters.NAME_ASCENDING):由方法名的字典顺序来决定执行顺序。

  1. import org.junit.FixMethodOrder;  
  2. import org.junit.Test;  
  3. import org.junit.runners.MethodSorters;  
  4.   
  5. //@FixMethodOrder(MethodSorters.DEFAULT)   
  6. //@FixMethodOrder(MethodSorters.NAME_ASCENDING)   
  7. //@FixMethodOrder(MethodSorters.JVM)   
  8. public class TestExecuteOrder {   
  9.   
  10.   @Test      
  11.   public void test03Third() {          
  12.       System.out.println("test03");   
  13.   }   
  14.     
  15.   @Test      
  16.   public void test01First() {          
  17.       System.out.println("test01");   
  18.   }   
  19.     
  20.   @Test      
  21.   public void test02Second() {          
  22.       System.out.println("test02");   
  23.   }   
  24. }   

执行结果如下

1.什么都不加:

test02
test01
test03

2. @FixMethodOrder(MethodSorters.DEFAULT) :

test02
test01
test03
3. @FixMethodOrder(MethodSorters.NAME_ASCENDING):

test01
test02
test03

4. @FixMethodOrder(MethodSorters.JVM):

test03
test01
test02

或者

test02
test01
test03

Test execution order

标签:

原文地址:http://www.cnblogs.com/miniren/p/4638514.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!