先记录一个整理的流程

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);
}
}

其中调用的而TestCaserunBare()方法如下

// TestCase.java
public void runBare() throws Throwable {
setUp();
try {
runTest(); // 反射调用方法执行
}
finally {
tearDown();
}
}

总结如下:

首先使用 TestSuite 将测试类 TestCase 拆分,为每个测试方法生成一个实例

依次执行每个实例的执行方法,中间经过 TestResult 用来收集测试数量及执行结果

最新文章

  1. javaSE第三篇
  2. solr 3.5.0 与 tomcat 7.0.5 整合配置
  3. hpunix下11gRac的安装
  4. Eclipse创建java web工程配置Tomacat和JDK 【转】
  5. OOP多态和继承要点
  6. (六)WebRTC手记之WebRtcVideoEngine2模块
  7. JSP-02- 使用JSP实现输出
  8. 如何更新Linux源
  9. 小课堂week15 年终小结
  10. STL中的单向队列queue
  11. I Love You Too HDU 2816
  12. Ajax概述及浅谈其与服务器的交互过程
  13. CentOS6.4关闭触控板
  14. hadoop启动 datanode的live node为0
  15. Promise注意点
  16. Linux date命令使用方法
  17. java 获取当前方法名
  18. 【转】IntelliJ IDEA关联SVN
  19. [lr] 直方图
  20. python基础学习1-日志信息

热门文章

  1. 内网渗透之跨边界传输 - 反弹shell
  2. 实验三——NFS服务器配置
  3. Asp.Net Core 2.0实现HttpResponse中繁切换
  4. 2019-2020-2 20174313张博 《网络对抗技术》Exp1 PC平台逆向破解
  5. Jmeter——如何使得token在各线程组间引用的游刃有余
  6. 量化学习 | Tushare 基本面选股 (二)
  7. C#读取静态类常量属性和值
  8. CentOS7安装和配置ftp服务
  9. JSFinder:一个在js文件中提取URL和子域名的脚本
  10. leetcode 签到 面试题40. 最小的k个数