`

对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方法。
分享到:
评论

相关推荐

    Junit源码分析(圣思园)

    **Junit源码分析(圣思园)** Junit是Java编程语言中最广泛使用的单元测试框架,它使得开发者能够方便地编写和运行可重复的、可靠的测试用例。本篇文章将深入探讨Junit的源码,揭示其内部工作原理,帮助我们更好地...

    自定义junit源码

    自定义JUnit源码是一个对Java开发人员非常有帮助的主题,特别是对于那些想要深入理解测试框架工作原理或希望根据自身需求定制测试工具的开发者。JUnit是一个广泛使用的单元测试框架,它简化了编写和运行针对Java代码...

    Junit设计模式分析(带源码)

    本资源"Junit设计模式分析(带源码)"旨在深入探讨JUnit在设计上的模式和最佳实践,通过源码分析帮助开发者更好地理解和应用这个工具。 1. 单元测试基础: 单元测试是对软件中的最小可测试单元进行检查,如函数、...

    junit in action 源码

    10. **持续集成**:JUnit源码也揭示了如何将测试集成到持续集成(CI)系统,如Jenkins、Travis CI等,确保每次代码变更后都能自动运行测试并获取反馈。 总的来说,分析《JUnit in Action》的源码,不仅可以帮助我们...

    junit4 单元测试源码

    【标题】"junit4 单元测试源码"涉及的是Java编程中单元测试的重要工具JUnit4的使用,这是对代码进行验证和调试的关键部分。JUnit4是JUnit框架的一个版本,它提供了更灵活的注解、测试套件管理和断言方式,使得编写...

    junit4测试源码

    关于"浪曦JUNIT4笔记"可能涉及的内容,浪曦可能对JUnit4的使用提供了详细的教程或者最佳实践,包括但不限于如何组织测试类,如何使用Mockito进行模拟对象测试,以及如何利用TestNG或Spock等其他测试框架与JUnit4结合...

    JUnit设计模式分析

    本篇将深入分析JUnit源码中的设计模式,帮助你理解其内在的架构原理,提升你的编程技能。 首先,JUnit的核心设计原则之一是“开闭原则”(Open-Closed Principle),它主张软件实体(类、模块、函数等)应对于扩展...

    feed4junit源码

    它能够从业务分析人员定义好的CVS或 Excel文件读取测试用例数据并在构建/单元测试框架中报告测试成功。利用Feed4JUnit能够很方便用随机但校验过的数据执行冒烟测试来提高代码 代码覆盖率和发现由非常特殊的数据结构...

    junit4 jar包以及源码

    同时,源码分析也有助于学习最佳实践和设计模式,提升自身的编程技能。 JUnit4的主要特性包括: 1. **注解驱动**:通过注解可以轻松地标识测试方法,如@Test表示测试方法,@Before和@After分别用于在每个测试方法...

    Springboot-junit项目源码

    SpringBoot-junit项目源码分析 SpringBoot是一个流行的Java框架,用于快速开发微服务和Web应用程序。它简化了Spring框架的配置,使得开发者可以更快地启动项目。JUnit是Java编程语言中最常用的单元测试框架,它使得...

    netbeans junit 源码

    2. **JUnit框架**:JUnit源码在NetBeans中的实现意味着我们可以看到如何在IDE内部封装和扩展JUnit的API。这可能涉及到对`@Test`注解的处理,以及如何触发测试执行和显示测试结果。 3. **事件监听和API调用**:...

    JUnit -- 分析

    9. **源码分析**:可能深入到JUnit的源代码,解释其设计模式,如观察者模式、装饰器模式,以及JUnit如何处理测试失败和测试报告。 10. **实战示例**:结合实际项目,展示如何利用JUnit进行单元测试,解决实际问题。...

    junit-example-源码.rar

    《深入解析JUnit源码》 JUnit是Java编程语言中最广泛使用的单元测试框架,它为开发者提供了编写和执行可重复测试的便利工具。本篇将基于"junit-example-源码.rar"这一压缩包中的源码,对JUnit的核心概念、工作原理...

    Junit源码【肯特版】好像是4.几版忘了

    以下是基于这个源码包可以深入理解的一些关键知识点: 1. **注解(Annotations)**:JUnit 4放弃了之前基于继承的测试模型,转而使用注解来标记测试方法。如`@Test`用于标记测试方法,`@Before`和`@After`分别用于...

    JUnit设计模式分析及简化的JUnit代码

    此外,JUnit还利用了装饰者模式,例如,`Assume`类提供了对测试条件的检查,它可以在运行测试之前装饰或增强原有测试行为。如果假设条件不满足,测试会被跳过,避免了不必要的执行。 策略模式在JUnit的断言库中体现...

    北京圣思园 junit全套笔记及源码

    【JUnit 框架详解】 JUnit 是一个广泛使用的 Java 编程语言的单元测试框架,由 Erich Gamma 和 Kent Beck 开发,它是 xUnit 家族的...结合源码分析,将帮助你更好地理解和应用这些概念,提升你的编程技能和代码质量。

    junit3.8.2 jar包和源码

    4. **学习设计模式**: JUnit源码中应用了许多设计模式,如工厂模式、装饰器模式等,这些都是软件设计中的重要概念。 **总结:** JUnit 3.8.2虽然已经是一个较旧的版本,但它仍然能帮助开发者理解和学习单元测试的...

    eclipse下利用ant、junit进行自动化测试例子源码

    6. **源码分析**:压缩包中的"testAntJunit"文件可能是包含了一个示例项目,这个项目演示了如何在Eclipse中设置ANT脚本和JUnit测试。通过查看源码,我们可以学习如何在代码中编写测试用例,以及如何在ANT构建文件中...

    对基于Junit的测试代码自动化生成的研究

    4. Junit源码分析:深入到Junit的源码层面,解释其核心组件和测试执行流程,为自动生成测试代码提供理论基础。 5. 实现策略:描述如何设计和实现一个自动化测试代码生成的系统,可能包括解析源代码结构,识别测试点...

Global site tag (gtag.js) - Google Analytics