JUnit4通过注解的方式来识别测试方法。目前支持的主要注解有:

  • @BeforeClass 全局只会执行一次,而且是第一个运行
  • @Before 在测试方法运行之前运行
  • @Test 测试方法
  • @After 在测试方法运行之后允许
  • @AfterClass 全局只会执行一次,而且是最后一个运行
  • @Ignore 忽略此方法

下面举一个样例:

  1. import org.junit.After;
  2. import org.junit.AfterClass;
  3. import org.junit.Assert;
  4. import org.junit.Before;
  5. import org.junit.BeforeClass;
  6. import org.junit.Ignore;
  7. import org.junit.Test;
  8. public class Junit4TestCase {
  9. @BeforeClass
  10. public static void setUpBeforeClass() {
  11. System.out.println("Set up before class");
  12. }
  13. @Before
  14. public void setUp() throws Exception {
  15. System.out.println("Set up");
  16. }
  17. @Test
  18. public void testMathPow() {
  19. System.out.println("Test Math.pow");
  20. Assert.assertEquals(4.0, Math.pow(2.0, 2.0), 0.0);
  21. }
  22. @Test
  23. public void testMathMin() {
  24. System.out.println("Test Math.min");
  25. Assert.assertEquals(2.0, Math.min(2.0, 4.0), 0.0);
  26. }
  27. // 期望此方法抛出NullPointerException异常
  28. @Test(expected = NullPointerException.class)
  29. public void testException() {
  30. System.out.println("Test exception");
  31. Object obj = null;
  32. obj.toString();
  33. }
  34. // 忽略此测试方法
  35. @Ignore
  36. @Test
  37. public void testMathMax() {
  38. Assert.fail("没有实现");
  39. }
  40. // 使用“假设”来忽略测试方法
  41. @Test
  42. public void testAssume(){
  43. System.out.println("Test assume");
  44. // 当假设失败时,则会停止运行,但这并不会意味测试方法失败。
  45. Assume.assumeTrue(false);
  46. Assert.fail("没有实现");
  47. }
  48. @After
  49. public void tearDown() throws Exception {
  50. System.out.println("Tear down");
  51. }
  52. @AfterClass
  53. public static void tearDownAfterClass() {
  54. System.out.println("Tear down After class");
  55. }
  56. }
 

Junit3的package是junit.framework,而Junit4是org.junit
执行此用例后,控制台会输出

写道
Set up before class
Set up
Test Math.pow
Tear down
Set up
Test Math.min
Tear down
Set up
Test exception
Tear down
Set up
Test assume
Tear down
Tear down After class
 

可以看到,执行次序是@BeforeClass -> @Before -> @Test -> @After -> @Before -> @Test -> @After -> @AfterClass@Ignore会被忽略。

java单元测试注释执行顺序的更多相关文章

  1. java代码块执行顺序

    父类 public class Father { public Father() { System.out.println("父类构造PUBLIC father"); } stat ...

  2. Java的初始化执行顺序(父类static变量->子类static变量->父类成员变量->父类构造器->成员变量->构造器->main函数)

    1. 引言 了解Java初始化的顺序,有助于理解Java的初始化机制和内存机制. 顺序:父类static变量->子类static变量->父类成员变量->父类构造器->成员变量- ...

  3. Java类的执行顺序

    在Java中一个类包括:构造块.构造方法.静态块.main方法.普通方法. 通过下面的例子将看出一个类中各种方法的执行顺序: /** * @author zhengbinMac */ public c ...

  4. 通过指令码来判断Java代码的执行顺序(++问题与return和finally的问题)

    问题 在<深入理解Java虚拟机>一书中遇到了如下代码: public int method() { int i; try { i = 1; return i; } catch (Exce ...

  5. [1]朝花夕拾-JAVA类的执行顺序

    最近在温习java的基础,刷题刷到java的执行顺序,很汗颜,答案回答错了! 题目类似如下: package com.phpdragon.study.base; public class ExecOr ...

  6. java初始化块执行顺序

    java中初始化块的执行顺序在构造器之前,多个初始化块之间定义在前的先执行.如下: public class InitialBlockTest { // The first one { System. ...

  7. JAVA变量的执行顺序

    对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序以此是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: package ...

  8. java中代码执行顺序

    静态代码块 -- >构造代码块 --> 构造方法静态代码块:只执行一次构造代码块:每次调用构造方法都执行 http://blog.csdn.net/wuhaiwei002/article/ ...

  9. Java基础系列5:Java代码的执行顺序

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.构造方法 构造方 ...

随机推荐

  1. Dom对象的经常用法

    Dom对象的经常用法: (1)getElementById() 查询给定ID属性值的元素,返回该元素的元素节点 1.  查询给定ID属性值的元素,返回该元素的元素节点.也称为元素对象.        ...

  2. python 多线程中同步的小样例

    #!/usr/bin/python # -*- coding: UTF-8 -*- # 在一个资源池中.获取资源 # Author: zhang # Date: 2015-7-27 import ti ...

  3. android JNI 资料大全

    AndroidJNI 通过C++调用JAVA 1. JNIEnv对象    对于本地函数    JNIEXPORT void JNICALL Java_video1_TestNative_sayHel ...

  4. 软件质量之道:PCLint之中的一个

    故天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能. 孟子 1引子 今天听老韩一席话,当真是感慨万千啊.心怀斗志昂扬.奋斗十年,到头来.却看到身 ...

  5. Linux Shell 条件测试

    1. 文件测试 -d 目录 -s 文件非空 -f 是正规文件 -w 有写权限 -r 有读权限 -x 有执行权限 -L 符号连接 -u 文件有suid位设置

  6. What are some advantages of using Node.js over a Flask API?

    https://www.quora.com/What-are-some-advantages-of-using-Node-js-over-a-Flask-API Flask is a Python w ...

  7. YTU 2553: 谁是赢家

    2553: 谁是赢家 时间限制: 1 Sec  内存限制: 128 MB 提交: 94  解决: 25 题目描述 某一天,hcbbt等一群弱菜去tamara巨巨家里一起玩了一个卡牌游戏.巨 巨家里有2 ...

  8. 并不对劲的loj2134:uoj132:p2304:[NOI2015]小园丁与老司机

    题目大意 给出平面直角坐标系中\(n\)(\(n\leq5*10^4\))个点,第\(i\)个点的坐标是\(x_i,y_i(|x_i|\leq10^9,1\leq y_i\leq10^9)\),只有朝 ...

  9. Synchronized的使用和注意事项

    synchronized: 1.取得的锁都是对象锁,而不是把一段代码或方法(函数)当作锁: 2.多个线程访问的必须是同一个对象. 3.当一个线程执行的代码出现异常时,其所持有的锁会自动释放 4.A线程 ...

  10. 洛谷 P1311 选择客栈 —— 水题

    题目:https://www.luogu.org/problemnew/show/P1311 看每个位置能否成为咖啡店,然后作为客栈和前面配对即可. 代码如下: #include<iostrea ...