Junit学习笔记1---起步,探索和一个controller实例

 昨天,开始学习Junit进行单元测试,到今晚,看了前三章,做一个小结。

    学习资料是《Junit in action》 源码可下载,可到CSDN下载区找"junitbook".使用的junit版本是4.8.1.

   第一章 JUnit jumpstart

    内容:

            手工编写简单的测试

            安装JUnit以及运行测试

            使用JUnit编写更好的测试

    定义:

            单元测试——单元测试的是独立的一个工作单元。在Java应用程序中,”独立的一个工作单元”常常指一个方法。作为对比,集成测试和接受测试则检查多个组件如何交互。一个工作单元是一项任务,它并不依赖其他的任何任务完成。

            注:所有的单元测试框架都应当遵循如下三个原则:

             1.每个单元测试都必须独立于其他单元测试而运行。

             2.必须以单元测试为单位来检测和报告错误。

             3.必须易于定义哪些要运行的单元测试。

           于是,JUnit的提出简化了测试的难度,帮助我们完成了很多重复的部分!

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

第二章 Exploring JUnit

内容:

      使用核心JUnit类

      理解JUnit生命周期。

   一、JUnit核心类

        TestCase+TestSuite+BaseTestRunner=TestResult

        以上就是所谓的JUnit成员三重唱!其共同作用产生测试的结果。

定义:

       TestCase(测试用例)——扩展JUnit的TestCase类的类。它以testXXX方法的形式包含一个或多个测试。一个test case 把具有公共行为的测试归入一组。在我们测试的时候就是testXXX方法;在我们提及test case的时候,我们指的是一个继承自Test Case的类,也就是一组测试。

      TestSuite(测试集合)——一组测试。一个test suite是把多个相关的测试归入一组的便捷方式。

      TestRunner(测试运行器)——执行test suite的程序。JUnit提供了几个test runner,你可以用它们来执行你的测试。没有TestRunner接口,只有一个所有test runner 都继承的BaseTestRunner。因此,在我们编写TestRunner的时候,我们实际上指的是任何继承BaseTestRunner的test runner类。

      说明:这三个类是Junit的框架骨干。一旦了解了TestCase TestSuite BaseTestRunner 的工作方式就能随心所欲的测试了!

      在正常的情况下,我们只需要编写test case,其他的类在幕后帮助我们完成任务。这三个类和另外的四个类是junit的核心,他们密切的配合!

      如下归纳了他们各自的责任:

      Assert                               当条件成立的时候assert方法保持沉默,但若条件不成立的时候就抛出异常

      TestResult                        TestResult包含了测试中发生的所有的错误或者失败

      Test                                  可以运行Test并把结果传递给TestResult

      TestListener                     测试中若产生事件(开始,结束,错误,失败)会通知TestListener

      TestCase                          TestCase定义了可以用于运行多项测试的环境(或者说固定设备)

      TestSuite                          TestSuite运行一组test case(他们可能包含其他test suite),它是Test组合

      BaseTestRunner               TestRunner是用来启动测试的用户界面,BaseTestRunner是所有test runner的超类

下面用两幅图来演示Junit的生命周期

      image005

 

image001

(看不到点击这里 !)

补充:

      在设计JUnit的时候,Kent Beck 和Erich Gamma运用了大量的设计模式,现在对几种使用到的设计模式进行补充,在书中称为”设计模式实战”

     1.Composite模式和Command模式

      Composite模式

               "把对象组合(composite)成树状结构来表示部分和整体的层次关系"。Composite模式可以让客户一致的对待单个或几个对象的组合。JUnit用test接口来运行一个单独的测试,或者是多个测试的集合的集合的集合,这就是composite!

      Command模式

                "把请求封装成一个对象,这样你就可以用不同的请求、队列或日志请求把客户参数化,还能支持可撤销的操作。"使用Test接口来提供公共的run方法是Command模式的例子。

     2.Collecting Parameter模式

                "当你需要从几个方法中收集结果时,你应当给方法增加一个参数,并传递一个会为你收集参数的对象。"TestResult是这个例子!

    3.Observer模式

                 "在对象之间定义一个一对多的依赖关系,这样当一个对象改变了状态,那么所有依赖它的对象都会自动的收到通知并更新。"TestRunner以TestListener的身份注册到TestResult,就是Observer模式。

           关于UML更多是信息,推荐Martin Fowler和Kendall Scott的UML distilled:A Brief Guide to the Standard Object Modeling Language(Reading,MA:Addison-Wesley,1999);Erich Gamma等人的经典书籍Design Patterns(Reading,MA:Addison-Wesley,1995)以及Martin Fowler的Patterns of Enterprise Application Architecture(Boston:Addison-Wesley,2003).

第三章 Sampling JUint

sampling

     这就是一个实例的全景!可以看见在右侧有一个绿色的横条,JUnit的格言中有一句就是”keep that bar green ,your code is clean”,就是说只要条条绿色的时候,我们的代码是没有错误的,但是如果是红色了,我们还要进行调试!!!

     关于这个程序,大家可以到csdn的下载中心找到,还原到IDE中,简单的说就测试了一个组件,在左侧的工作窗口中,我们看见了两个,一个包是存放目的测试程序,一个是存放测试程序,编程有很多的技巧。

    针对组件的测试,本程序算是一个中等的,但是可以在此基础上进行扩展。在实践中,最好的布局是同一个包,分离的目录。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值