博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[深入JUnit] 测试运行的入口
阅读量:5952 次
发布时间:2019-06-19

本文共 1411 字,大约阅读时间需要 4 分钟。

阅读前提

  • 了解JUnit

  • 对JUnit的内部实现有兴趣

  • 不妨看看

代码版本: junit 4.12

代码搜索工具:
常用符号

  • _: 用来略去代码段中无关紧要的parameter

  • ...: 用来略去无关紧要的代码实现

本文的展开方式:连续提出问题,通过阅读JUnit源代码回答。

剧透

如果您看了, 里面的BlockJUnit4ClassRunner是通过本文涉及到的,一个叫AllDefaultPossibilitiesBuilder的类,与JUnitCore连接到一起的。JUnitCore是今天的主角!

Q&A

Q1: 比如说我们有一个SampleTest类,如何调用JUnit来运行测试?

A: JUnit有一个JUnitCode的类,他的描述是

JUnitCore is a facade for running tests.

所以,这个是运行测试的一个入口。Facade模式就是把错综复杂的子模块隐藏起来,暴露几个简单的API给用户使用。

source code:

Q2: 哪该使用JUnitCore的那个函数?

A: 瞄一眼JUnitCore,有一个main函数。大喜

public static void main(String... args) {  Result result = new JUnitCore().runMain(new RealSystem(), args);  System.exit(result.wasSuccessful() ? 0 : 1);}

Q3: JUnitCore#runMain内部有什么有意思的要看的东西?

A: JUnitCore#runMain最终落脚到org.junit.runner.Runner#run这个函数。runner是如何决定的?请看org.junit.internal.builders.AllDefaultPossibilitiesBuilder内部。

Q4: JUnitCore这个类有什么瑕疵么?

A: 这个类所有的methods都是public的,有好几个method的生命让人感觉很费解。作为一个facade类,应该提供尽可能少的,封装良好的方法。但JUnit提供了8个run**的方法,其中runMainrunClasses(Computer, classes)runRequest都应该是protected(package private),因为其中泄露了很多子系统的model概念,例如Request, Computer之类。

Summary

  • JUnitCore是一个facade类,他提供了几个测试入口::main, runClass啥的。

  • AllDefaultPossibilitiesBuilder这个类存了几个默认的Test Runner。常用的BlockJUnit4ClassRunner就在其中

References

  • JUnitCore

  • AllDefaultPossibilitiesBuilder

下期内容

泛泛地了解了JUnit的code path,暂时没兴趣继续深挖了。

接下来,打算转战倡导Mockito。Mockito::mock, Mockito::doReturn这些函数我觉得挺神奇的。

转载于:https://www.cnblogs.com/crazyacking/p/5940173.html

你可能感兴趣的文章
为linux扩展swap分区
查看>>
python \uxxxx转中文,Python列表中的字典 \uxxxx转中文,
查看>>
解决ios下的微信打开的页面背景音乐无法自动播放(转载)
查看>>
系统编程是什么
查看>>
git rebase简介(基本篇)
查看>>
Backup and Recovery Basics1
查看>>
C语言各种keyword
查看>>
Rescue
查看>>
1775. [国家集训队2010]小Z的袜子
查看>>
前端学习 -- Html&Css -- 表单
查看>>
将字典直接写入文件,出现中文乱码问题
查看>>
bzoj1513【POI2006】Tet-Tetris 3D
查看>>
剑指offer——35复杂链表的复制
查看>>
DFI、DPI技术
查看>>
hibernate 执行存储过程 方法
查看>>
RapidIOIP核的验证方法研究_王玉欢
查看>>
崩溃日志的实例
查看>>
base64是啥原理
查看>>
字符串中去除连续相同的字符保留一个
查看>>
实战 Windows Server 2012 群集共享卷
查看>>