概述
Junit是我们用的最多的一种测试框架,我们以3.8.2来谈谈他的设计模式,从源代码角度逐个分析,总共有7种设计模式,在讲之前,还是先要弄清楚Junit框架是如何工作的?会当凌绝顶,一览众山小!
先看这张图,Junit测试框架就像一个黑盒子,我们给他提供输入,也就是测试用例,他会给我们输出,也就是测试结果。
打开源码,结构很简洁,如图:
核心包是runner和framework,extensions是扩展包,而awtui、swingui以及textui是提供的三种测试客户端,基于文本和图形界面,其核心类即是TestRunner,通过该类来启动客户端调用Junit测试框架。
类图分析
可以看出,Junit测试框架,核心的几个类包括有Test、TestResult和TestListener,以及TestSuite和TestCase;其中:
TestCase是我们比较熟悉的,写测试类的时候都会继承该类;
TestListener是测试监听器,会将测试结果发送给各种自定义的TestListener;
TestResult是测试结果,其中注册了TestListener,当测试结束后,会将测试结果通知注册的TestListener;
在结合ide使用过程中,比如eclipse,就已经集成了junit单元测试功能,这是因为在eclipse中已经开发了Junit的客户端,该客户端会继承TestListener,成为监听器,并且会调用测试框架的核心部分进行测试,最后将测试结果反馈回客户端展现。
测试流程分析
上图客户端指的是你用的各种ide,如eclipse、Intellj idea等已经集成了junit测试功能的ide,而最右边的橙色部分测试用例就是你编写的代码部分,在整个测试框架运行过程中,你的测试用例只是一小部分,而整个蓝色部分是整个框架的核心流程,其中运用了多达7种设计模式,从而构建了一个小巧,精致内敛的单元测试框架;下一节会从源代码着手分析各种设计模式的运用。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于