使用Groovy简化单元测试

发表于:2010-7-07 13:38

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing博客转载

  本示例采用测试驱动开发的方法,首先编写测试:

1. public class HelloTest extends GroovyTestCase{ 
2.     @Test 
3.     public void testToString(){ 
4.         def h = new Hello("prince"); 
5.         assertEquals("hello prince",h.toString()); 
6.     } 
7. } 

  这是一段groovy的代码,定义了一个Hello类型,并且当构造函数参数为“prince”时,希望这该对象的toString()方法能够返回“hello prince”。

  接下来,编写产品代码,定义Hello类,首先toString()方法。注意,产品代码可以是java的,也可以是groovy的。这里使用groovy编写产品代码。如下:

1. public class Hello{ 
2.  
3.     private def _info 
4.      
5.     public Hello(def info){ 
6.         _info = info 
7.     } 
8.     String toString(){ 
9.         return "hello ${_info}" 
10.     } 
11. } 

  很简单的代码,当然测试也会很轻易的通过。其实,对于这种比较简单的问题,groovy与java的解决方案是差不多的。但在Mock Object方面,groovy更胜一筹。

  java的mock解决方案比较流行的有easymock和jMock。对于easymock,如果需要mock类而不是接口,则需要引入easymockclassextension.jar。在groovy中,使用gmock会简单的多。

  关于GMock的使用,有两种方法。一是直接继承自GMockTestCase,二是在类上使用@WithGMock注解。GMock使用闭包来简化操作。下面给出简单示例:

1. @WithGMock 
2. public class NewTest extends GroovyTestCase{ 
3.     @Test 
4.     public void testMock(){ 
5.         def gmc = new GMockController() 
6.         def mockLoader = gmc.mock() 
7.                 mockLoader.load('key').returns('value') 
8.                 gmc.play { 
9.                   assertEquals "value", mockLoader.load('key') 
10.                 } 
11.     } 
12. } 

  现在,关于单元测试有了一种新的解决方案。很多公司由于各种原因需要使用java进行开发,如果想简化单元测试或者是groovy语言的美妙,使用groovy作为单元测试的解决方案不失为一个好的选择。

相关阅读:

Gmock初体验

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号