快速业务通道

利用Ruby简化你的Java测试 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

利用Ruby简化你的Java测试

时间:2011-01-27 infoq 殷安平

Martin Fowler:当然(愿意花掉一半的时间来写单元测试)!因为单元测试能够使你更快地完成工作。无数次的实践已经证明这一点。你的时间越是紧张,就越是要写单元测试,它看上去慢,但实际上能够帮助你更快、更舒服地达到目标。

单元测试很重要,但是……

单元测试的重要性,我想再多做一些强调也不为过。但实际情况是我经常听到Java开发人员抱怨单元测试繁琐、难写。虽然勉强为之,却疲于奔命,并没有体会到它的好处!最终造成的结果是出现了大量只能运行一次的单元测试。是将责任简单归结于开发人员?还是开发流程或制度的不完善?

平心而论,我自己在做TDD或单元测试的时候,有很多时候也确实觉得无趣,尤其是在一些准备测试数据或测试环境的工作上,例如我们经常需要随机生成特定长度的字符串用于测试,需要如下代码:

public String getRandomAlphabetic(int count) {        count = count <= 0 ? 5 : count; //默认为5        //构建一个包含所有英文字母的字符串        String alphabet="abcdefghijklmnopqistuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";        StringBuffer sb = new StringBuffer(count);        for (int i = 0; i < count; i++) {          int character=(int)(Math.random()*26);          sb.append(alphabet.substring(character, character+1));        }        return sb.toString();    }

如果用Ruby的话

def random_alphabetic(size=5)        chars = (''a''..''z'').to_a + (''A''..''Z'').to_a # 构建一个从a到Z的一个字母表数组       (0...size).collect { chars[rand(chars.length)] }.join # 从chars数组中返回指定长度的随机字符数组(默认5个),调用join方法,将这个数组中的所有元素连接成一个字符串    end

对比后大家感觉如何?有经验的开发人员马上会挑战说,我们有现成的commons-lang库,简单调用RandomStringUtils.randomAlphabetic(5)就可以完成任务,可我想问的是,如果没有第三方库的支持,你更愿意用哪种方式?还可以想象构建一个树状结构的数据,Ruby的方式

data =<<-EOF    {    "order_id": "xxx-xxxxx-xxx",    "books": [      {"ISBN": "2323-2323", "number": 2, "price": 20.00},      {"ISBN": "2323-2324", "number": 3, "price": 30.00},      {"ISBN": "2323-2325", "number": 2, "price": 20.00},      {"ISBN": "2323-2326", "number": 3, "price": 30.00},      {"ISBN": "2323-2327", "number": 2, "price": 20.00}     ]    }    EOF     # 该数据为json格式的一段字符串    order = JSON.parse(data)    p order[''books''][0][''ISBN''] #=> 2323-2323

用Java该怎样完成,很多人会祭出Java世界中最被滥用的七种武器之首“xml”,即便如此能完成的如此优雅吗?如果不是简单的“语言宗教崇拜”,至少我会毫不犹豫的选择用Ruby的方式完成任务。省点时间,早点下班陪陪老婆也好啊!:)

利用Ruby简化你的Java测试(2)

时间:2011-01-27 infoq 殷安平

在Ruby的世界里

那作为一个Java的开发人员,如何享受到Ruby在测试方面给我们带来的好处呢?

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号