junit源码之Runner】的更多相关文章

Runner 定义了执行用例的执行器方法. public abstract class Runner implements Describable { /* 获取描述 */ public abstract Description getDescription(); /** 运行测试用例*/ public abstract void run(RunNotifier notifier); /***/ public int testCount() { return getDescription().t…
前面的博客我们也已经整理到了,我们使用junit38,在写测试类的时候我们的测试类必须继承TestCase.这个所有测试类的父类在junit.framework包下面. 前面我们的整理都是说直接在IDE中直接运行测试类,右击然后run as junit.当然我们还可以自己写main方法来运行测试,其实都一样. OK,现在我们来写一个例子,直接运行测试类的main方法来跑测试.代码如下: package org.linkinpark.commons.textui; import org.linki…
JUnit 的概念及用途 JUnit 是由 Erich Gamma 和 Kent Beck 编写的一个开源的单元测试框架.它属于白盒测试,只要将待测类继承 TestCase 类,就可以利用 JUnit 的一系列机制进行便捷的自动测试了. JUnit 的设计精简,易学易用,但是功能却非常强大,这归因于它内部完善的代码结构. Erich Gamma 是著名的 GOF 之一,因此 JUnit 中深深渗透了扩展性优良的设计模式思想. JUnit 提供的 API 既可以让您写出测试结果明确的可重用单元测试…
OK,我们接着上篇整理.上篇博客中已经列出的junit的几个核心的类,这里我们开始整理junit完整的生命周期. JUnit 的完整生命周期分为 3 个阶段:初始化阶段.运行阶段和结果捕捉阶段. 这篇这里先来整理下junit的初始化阶段.也就是创建 Testcase 及 TestSuite.先来贴出junit测试框架入口: /** * @创建时间: 2016年1月21日 * @相关参数: @param args * @功能描述: 测试框架入口 */ public static void main…
JUnit Rule简述 Rule是JUnit 4.7之后新加入的特性,有点类似于拦截器,可以在测试类或测试方法执行前后添加额外的处理,本质上是对@BeforeClass, @AfterClass, @Before, @After等的另一种实现,只是功能上更灵活多变,易于扩展,且方便在类和项目之间共享. JUnit的Rule特性提供了两个注解@Rule和@RuleClass,大体上说@Rule可以与@Before及@After对应,@ClassRule可以与@BeforeClass及@After…
RunListener简述 JUnit4中的RunListener类用来监听测试执行的各个阶段,由RunNotifier通知测试去运行.RunListener与RunNotifier之间的协作应用的是观察者模式,RunListener类充当观察者角色,RunNotifier充当通知者角色,有点类似于JDK中的事件监听器MouseListener在鼠标执行不同的操作时触发相应方法中封装的动作.RunListener监听的动作包括如下测试阶段: 所有测试开始前:调用testRunStarted()…
上一篇我们回答了之前在梳理流程时遇到的一些问题,并思考了为什么要这么设计. 本篇是<如何高效阅读源码>专题的第十二篇,通过项目之间的联系来进行扩展阅读,通过项目与项目之间的联系更好的理解项目. 本节内容: TestRunner的执行流程 Spring如何整合JUnit 在我们使用Spring的项目中进行测试时,一般都需要添加下面一行注解: @RunWith(SpringRunner.class 为什么要使用这个注解呢?为了回答这个问题,我们先来了解一下TestRunner是如何执行的. Tes…
采用Junit4.8.2分析Junit实现架构 源码架构两个大包:junit包 org包 首先分析org.junit.runners.model包下的几个类 org.junit.runners.modela.TestClass org.junit.runners.modela.FrameworkMethod org.junit.runners.modela.FrameworkMember org.junit.runners.modela.FrameworkField 涉及到的类: org.jun…
OK,前面的博客我们整理了junit运行完了所有的测试用例,那么OK了,现在开始该收集测试结果了. 在这最后一步中,junit主要是玩一个类,TestResult.这里类中封装了几个参数,在初始化这个类的时候赋初始值: protected List<TestFailure> fFailures; // 失败结果集 protected List<TestFailure> fErrors; // 错误结果集 protected List<TestListener> fLis…
前面的博客里面我们已经整理了junit的初始化阶段,接下来就是junit的测试驱动运行阶段,也就是运行所有的testXXX方法.OK,现在我们开始吧. 前面初始化junit之后,开始执行doRun方法. Test suite = getTest(testCase); return doRun(suite, wait); doRun()方法的代码如下: /** * @创建时间: 2016年1月22日 * @相关参数: @param suite * @相关参数: @param wait * @相关参…