【说明】:本文基于JUnit4.13版本代码,JDK1.8.0_151环境,使用工具为Eclipse,版本为Oxygen.1a Release (4.7.1a)
【图示】:
【正文】:JUnit4.13代码,依赖于Hamcrest,运行源代码需要配置相应的hamcrest的jar包。我直接利用的是Eclipse自带的hamcrest包。
编写一个最简单的测试类,根据这个测试类,来研究一下JUnit4.13的栈轨迹,代码如下:
1 package com.note.research; 2 3 import org.junit.Test; 4 5 /** 6 * 7 * @author heng.guo 8 * @date 2018-10-14 9 */ 10 public class ResearchMainClass { 11 @Test 12 public void test() { 13 System.out.println("test annotation"); 14 } 15 }
在第13行处打一个断点,观察一下栈轨迹,如图:
注意画黄线部分,因为在黄线以下,是Eclipse自带JUnit插件的类。JUnit4是启动的主类,首先调用的是JUnit4的run方法。
查看了org.junit.runners.JUnit4这个类,JUnit4继承自BlockJUnitClassRunner这个类,BlockJUnitClassRunner这个类又继承自ParentRunner,而run方法就定义在这个类中。