使用Groovy简化单元测试
来源:互联网 发布:windows server 2000 编辑:程序博客网 时间:2024/06/06 03:26
单元测试的重要性怎么强调都不为过。在进入正题之前,还是先罗嗦一下单元测试的重要性。
首先,单元测试能够解耦合。这一点不是单元测试的目的,但却是单元测试的结果。为什么呢?因为为了能够使代码能够测试、便于测试,需要将被测试代码与其它代码分离。这样,就必须就导致了被测试代码与其它代码的解耦合。无形中也提高了代码的可测试性。
其次,单元测试是重构的基础。没有单元测试,就没有重构。任何人都不敢对没有测试代码的代码进行修改,因为不能确定所作出的修改是否有副作用(无形中引入bug)。
第三,单元测试能够优化设计。为什么这样说呢?因为单元测试首先考虑的类和方法的外部特性。也就是从接口使用者的角度来分析和解决问题。这样就能防止过度设计,同时也会使接口易于使用。
最后,单元测试是一份准确的文档。单元测试能够保证及时更新,与代码同步。与代码不同步的文档比没有文档的情况更加糟糕。单元测试的代码是可运行的,测试代码是产品代码接口使用方法的最佳示例。
说了这么多,单元测试这么好,这么重要,为什么很多人都没有付诸实践呢?单元测试代码不是产品代码!单元测试不能带来新的特性。单元测试的编写占用了开发产品代码的时间,降低了生产率。
其实,JUnit框架是一个非常简单、易用的测试框架。使用它可以很轻松的编写出单元测试代码。今天,就来介绍一个更简单的编写单元测试的方法——使用groovy进行单元测试。
Groovy是运行在jvm上的面向对象的动态脚本语言。最大的特点就是能够和java进行相互调用。由于Groovy语法的简单和灵活性,能够帮助简化单元测试的编写。
下面就来介绍使用Groovy进行单元测试的方法。
Groovy的单元测试是基于JUnit的,所以在类路径中需要引入相关的Junit.jar。而Groovy的相关类则包含自Groovy语言本身的类库中。使用Groovy进行单元测试,需要继承自GroovyTestCase类。同样的,它也可以定义setUp()和tearDown()方法来初始化和清除测试环境。在测试内部,可以像JUnit一样使用断言来判断期望值与真实值是否相等,当然Groovy提供了相应的断言方法。
下面就来看一个简单的例子:
本示例采用测试驱动开发的方法,首先编写测试
这是一段groovy的代码,定义了一个Hello类型,并且当构造函数参数为“prince”时,希望这该对象的toString()方法能够返回“hello prince”。
接下来,编写产品代码,定义Hello类,首先toString()方法。注意,产品代码可以是java的,也可以是groovy的。这里使用groovy编写产品代码。如下:
很简单的代码,当然测试也会很轻易的通过。其实,对于这种比较简单的问题,groovy与java的解决方案是差不多的。但在Mock Object方面,groovy更胜一筹。
java的mock解决方案比较流行的有easymock和jMock。对于easymock,如果需要mock类而不是接口,则需要引入easymockclassextension.jar。在groovy中,使用gmock会简单的多。
关于GMock的使用,有两种方法。一是直接继承自GMockTestCase,二是在类上使用@WithGMock注解。GMock使用闭包来简化操作。下面给出简单示例:
具体关于GMock的使用在这里就不多复述了,见我的另一篇blog——GMock初体验 http://blog.csdn.net/prince2270/archive/2009/08/31/4504700.aspx。
现在,关于单元测试有了一种新的解决方案。很多公司由于各种原因需要使用java进行开发,如果想简化单元测试或者是groovy语言的美妙,使用groovy作为单元测试的解决方案不失为一个好的选择。
- 使用Groovy简化单元测试
- 正式使用groovy来单元测试
- 使用Groovy+JUnit+GMock进行单元测试
- 对 Groovy 进行单元测试
- Groovy Tip 10 Groovy语言对String的简化操作
- 用Groovy思考 第一章 用Groovy简化Java代码
- 用Groovy思考 第一章 用Groovy简化Java代码
- Groovy学习:第一章 用Groovy简化Java代码
- Groovy Eclipse Plugin使用
- 使用Groovy "*“ 操作符
- 为什么使用Groovy
- groovy XmlSlurper使用一
- groovy XmlSlurper使用二
- 使用 Groovy 打包 Spring
- groovy脚本使用map
- groovy的使用-简介
- 使用Groovy操作文件
- Groovy使用List集合
- GPRS的附着过程
- Draw Something on Your Personal Window
- gnuplot使用技巧(转载)
- 上海格大学在江湖上的绰号!
- java屏幕取色器的实现
- 使用Groovy简化单元测试
- java屏幕尺的实现
- Java的23中设计模式
- 关于chm格式的电子书不能打开/chm格式电子书不能看索引的解决办法
- 用ATL 创建(Activex) 窗口
- 再见,谷歌-----李开复
- sizeof().cpp - 一目了然
- TI DSP .cmd文件的编写
- winAPI做hash加密