JUnit 3.8.1 源码学习简记
2024-10-08 22:46:45
先记录一个整理的流程
1、首先使用TestSuite
获取一个TestCase
中的所有测试方法(方法名以test开头的方法),为每个方法生成一个TestCase
实例并保存,实例中有个字段保存对应的方法名(为之后反射运行对应的方法做准备)。
2、之后依次执行所有生成的实例的run
方法(命令模式),其中代码如下
// TestCase.java
public void run(TestResult result) {
result.run(this); // TestCase 调用 TestResult 的方法
}
TestResult
之后主要用来收集运行的结果(其中维护一个监听器列表,在失败或错误时发送通知),它还会反过来调用TestCase
来实际执行,TestResult
中的代码如下
// TestResult.java
protected void run(final TestCase test) {
startTest(test); // 用来收集一共有多少个测试方法
Protectable p= new Protectable() {
public void protect() throws Throwable {
test.runBare(); // TestResult 调用 TestCase 的方法执行----实例执行方法
}
};
runProtected(test, p); // 用来收集运行的结果(成功、失败数量)
endTest(test);
}
// 收集运行结果
public void runProtected(final Test test, Protectable p) {
try {
p.protect();
}
catch (AssertionFailedError e) { // 运行失败
addFailure(test, e);
}
catch (ThreadDeath e) { // don't catch ThreadDeath by accident
throw e;
}
catch (Throwable e) { // 运行出现错误
addError(test, e);
}
}
其中调用的而TestCase
的runBare()
方法如下
// TestCase.java
public void runBare() throws Throwable {
setUp();
try {
runTest(); // 反射调用方法执行
}
finally {
tearDown();
}
}
总结如下:
首先使用 TestSuite 将测试类 TestCase 拆分,为每个测试方法生成一个实例
依次执行每个实例的执行方法,中间经过 TestResult 用来收集测试数量及执行结果
最新文章
- javaSE第三篇
- solr 3.5.0 与 tomcat 7.0.5 整合配置
- hpunix下11gRac的安装
- Eclipse创建java web工程配置Tomacat和JDK 【转】
- OOP多态和继承要点
- (六)WebRTC手记之WebRtcVideoEngine2模块
- JSP-02- 使用JSP实现输出
- 如何更新Linux源
- 小课堂week15 年终小结
- STL中的单向队列queue
- I Love You Too HDU 2816
- Ajax概述及浅谈其与服务器的交互过程
- CentOS6.4关闭触控板
- hadoop启动 datanode的live node为0
- Promise注意点
- Linux date命令使用方法
- java 获取当前方法名
- 【转】IntelliJ IDEA关联SVN
- [lr] 直方图
- python基础学习1-日志信息