对junit源码的一些分析

首先new TestSuite类,通过TestSuite传入测试类的class,在TestSuite的构造方法中,获得类名,然后通过反射获得测试类的构造
方法。然后测试类的class通过getModifiers方法获得类的修饰符,这时会判断测试时是否是public的,如果不是会调用warning方法,
在其中调用fail断言,将测试设为失败,并结束测试。
如果是public修饰的则会通过isAssignableFrom方法判断,测试类是否是Test的子类,如果是的话,则会通过反射获得类中所有的方
法。然后遍历所有的方法,并调用addTestMethod方法,这是会判断方法名是否存在,如果存在的话,直接return,否则会判断方法是
否是public的,并且会判断是否是测试方法,测试方法时以test开头,无返回值,无参数的方法,如果不是则添加到失败中。如果是
public的则将其添加到方法的列表中,然后通过createTest方法使用测试类名和获得的方法名通过反射将测试方法封装成一个个的对象,
这里使用的就是命令模式。createTest方法中首先是获得测试类的构造器,接下来会判断构造器中是否有参数,如果没有则直接通过
newInstance方法获得test实例,这时会通过instanceof方法判断test是否是TestCae的子类,如果是则将方法通过setName方法,
给当前的test实例。当然如果在判断构造器有参数时,则会直接通过构造器传入要测试的方法名,从而获得test实例。最后会将test的
实例return回去。这是就会通过addTest方法将createTest返回的test实例,添加到测试列表中,在这个时候使用的就是组合模式了,
也就是将test实例作为叶子节点,而TestSuite作为树枝。这样一切处理完后就会通过TestRunner调用run方法传入Test实例执行了,
在其中首先会实例化本类对象,在构造方法中会初始化ResultPrinter实例,ResultPrinter是实现了TestListener接口的,所以在
此就等于是初始化了一个观察者。同时在run方法中会调用doRun方法,在其中会创建一个被观察者的实例,并且会将刚创建好的观察者
通过addListener方法加入到被观察者中的观察者列表中去,此处就使用了经典的观察者模式了。此时测试实例调用run方法,并传入
被观察者对象,这是在此run方法中会通过被观察者调用其中的run方法,并传入testCase的本类实例,在此run方法中,首先会调用
startTest方法,在此方法中会遍历观察者,并通过观察者调用startTest方法,表示测试开始,会打印一个圆点。startTest方法
执行完后就会真正的调用执行方法了test.runBare,在此使用模板模式,因为在TestCase类中定义了执行流程,会先执行setUP、在
执行runTest、最后执行tearDown方法。runTest就是我们真正的测试方法了,在此时会通过方法名获得要测试的方法,同样会判断方法
是否是public的,如果不是则直接断言失败。如果是public的则直接通过反射调用。在runBare中需要注意的是tearDown方法,是在捕获
测试方法异常的finally中调用的,因为不管测试是否通过,都需要调用tearDown方法结束测试。在runBare方法结束后就会调用
runProtected方法,此方法中会将测试的失败信息通过addFailure方法添加到失败中,失败会以F的形式在console中显示,将程序的错误
通过addError方法添加到错误中,会以E的形式在console中显示。将测试信息添加到观察者中去后,就会调用endTest方法了,在endTest
方法中会遍历所有观察者,并调用观察者的endTest方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值