【JUnit4.10源代码分析】5 Statement

如果要评选JUnit中最最重要的类型,或者说核心,无疑是org.junit.runners.model.Statement。Runner等类型看起来热闹而已。

package org.junit.runners.model;
/**
 * Represents one or more actions to be taken at runtime in the course
 * of running a JUnit test suite.
 */
public abstract class Statement {
	/**
	 * Run the action, throwing a {@code Throwable} if anything goes wrong.
	 */
	public abstract void evaluate() throws Throwable;
}

Statement是命令模式中的Command、装饰模式中的Component。它是Rule发挥作用的关键。

写完JUnit4.8.2源代码分析-5.1 Statement之复合命令之后,yqj2065就对JUnit的源代码的研读缺乏激情鸟。JUnit4.10的源代码在此BlockJUnit4ClassRunner没有明显的变化。

读完最精致的设计,其他还有什么好玩的呢?可能就是并行。但是并行是一种Java技术,和反射、注解、泛型一样的技术问题。不是精致的设计。准备花点时间好好写点Statement的东西补充本文,先挖坑。JUnit4.8.2源代码分析-5Statement JUnit之Rule的使用先凑活着看。

时间: 2024-12-21 14:47:27

【JUnit4.10源代码分析】5 Statement的相关文章

【JUnit4.10源代码分析】0导航

JUnit是由GOF 之一的Erich Gamma和 Kent Beck 编写的一个开源的单元测试框架,yqj2065分析JUnit源代码的主要目的是 学习其中对设计模式的运用. JUnit也是一个学习Java编程. 学习框架设计 和研究如何应对版本升级和接口变化的案例. NetBeans IDE 7.4 (Build 201310111528) 的测试库为JUnit4.10,因而在前面对JUnit4.8.2源代码分析的基础上,yqj2065将采用较正规的方式介绍JUnit4.10源代码. 10

【JUnit4.10源代码分析】6.1 排序和过滤

abstract class ParentRunner<T> extends Runner implements Filterable,Sortable 本节介绍排序和过滤.(虽然JUnit4.8.2源代码分析-6.1 排序和过滤中演示了客户使用排序和过滤的方式,也有些不明白其设计意图,但是,先读懂源代码为妙.说不定看着看着就明白了.) org.junit.runner.manipulation包 排序和过滤的相关类型,在org.junit.runner.manipulation包中. 1.例

【JUnit4.10源代码分析】5.2 Rule

TestRule声明工厂方法 TestRule是一个工厂方法模式中的Creator角色--声明工厂方法. package org.junit.rules; import org.junit.runner.Description; import org.junit.runners.model.Statement; public interface TestRule { Statement apply(Statement base, Description description); } 测试程序员

【JUnit4.10源代码分析】3.4 Description与测试树

Description使用组合模式描述一个测试树.组合模式中所有元素都是Composite对象. Description有成员变量private final ArrayList<Description>fChildren= newArrayList<Description>(); //无元素 保存其子结点.fChildren非空,所以任何子结点都是一个Composite,但是this. getChildren().size()为0的结点,事实上就是叶子. 测试树 一颗测试树Desc

【JUnit4.10源代码分析】6 Runner

org.junit.runner.Runner是JUnit的工作引擎.它在诸多类型的支持下,处理测试并产生(Description).Failure和Result等输出. Runner的主要类层次如图所示. Describable与Runner 为了保证Runner的子类都有一个Description(虚域模式)数据来源/成员变量,Runner implements Describable. package org.junit.runner; public interface Describab

JUnit4.8.2源代码分析-5 Statement

org.junit.runners.model.Statement/语句是对运行JUnit测试组过程中的一个或多个动作的封装.如果说Runner.run()表示运行JUnit测试组的整个过程,则Statement表示其中或大或小的步骤.针对方法的标注如@Test .@Before.@After.@BeforeClass.@AfterClass具有某些执行的顺序,Statement是整个过程的一个步骤结点,而诸多Statement构成的链式结构表达了整个过程.在各种Runner中广泛使用它们. o

【JUnit4.10源码分析】5.2 Rule

标注@Rule TestRule是一个工厂方法模式中的Creator角色--声明工厂方法. package org.junit.rules; import org.junit.runner.Description; import org.junit.runners.model.Statement; public interface TestRule { Statement apply(Statement base, Description description); } 因为工厂方法apply有

JUnit4.8.2源代码分析-2 org.junit.runner.Request和Description

JUnit4.8.2源代码中,最令yqj2065感兴趣的是org.junit.runner.Request,它是几个意思呢? ①封装JUnit的输入 JUnit4作为信息处理单元,它的输入是单元测试类--布满各种JUnit4的RUNTIME标注的类,但由于使用反射机制,JUnit4的输入严格地说是一个或多个(组)单元测试类的Class对象.早期版本的JUnit主要处理一个测试或测试构成的树,在增添了对过滤/ filtering和排序/ sorting支持后,JUnit4加入了这个概念.毕竟按照1

【JUnit4.10源码分析】6.1 排序和过滤

abstract class ParentRunner<T> extends Runner implements Filterable,Sortable 本节介绍排序和过滤. (尽管JUnit4.8.2源码分析-6.1 排序和过滤中演示了客户使用排序和过滤的方式,也有些不明确其设计意图.可是.先读懂源码为妙.说不定看着看着就明确了. ) org.junit.runner.manipulation包 排序和过滤的相关类型.在org.junit.runner.manipulation包中.Sort