|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你精通任何一门语言就最强大。现在来看,java的市场比C#大,C#容易入手,比较简单,java比较难
本文是ProductiveJavawithRuby系列文章的第二篇,经由过程上一篇的先容,我想人人对怎样使用Ruby举行单位测试有了一个基础的懂得,从这里入手下手,我将和人人一同会商一些使用Ruby举行单位测试时的初级话题。
一般,新手艺的引进只能下降办理成绩的难度,而不是打消成绩自己!
在“依附”的原始森林中挣扎...
经由过程Ruby我们能够更高效的处置数据筹办的成绩,可是实在的天下其实不那末复杂!跟着测试的深切,我们会更加的感到一不当心就挣扎在“依附”的原始森林中!偶然候仿佛必要到场有数的jar包,初始化一切的组件,设置完统统的数据库、服务器及收集的干系,才干入手下手一小段复杂的测试。更疾苦的是这统统是云云的懦弱,仅仅是或人在数据库中多加了一条数据大概变动了一部分情况设置,你苦心构建的一切测试就全体复工了!几次,你仰天长叹:“神啊!救救我吧...”。可神在那边呢?
Mock
单位测试之以是无效,是由于我们服从了疾速反应,小步快跑的准绳!一次只测试一件事变!而大批依附的办理事情分明让单位测试偏离的底本的方针,也让人以为不恬逸。Mock手艺就可以让我们无效挣脱在森林中的恶梦。我们晓得,在盘算机的天下里,一样的输出必定能失掉对应的输入,不然就是非常情形了。Mock手艺实质上是经由过程拦阻并交换指定办法的前往值挣脱对程序完成的依附。关于1+1如许的输出前提举行盘算,Mock手艺间接拦阻原办法,交换该盘算办法的前往值为2,不体贴这个算法究竟是经由过程收集失掉的,仍是经由过程当地盘算失掉的。如许就和详细完成解藕了。
在对Java举行单位测试的时分,一般会对某个详细类或某个接口发生依附,要解藕就必要可以对详细类或接口举行Mock。幸亏这些在JRuby中都十分的复杂,因为JtestR主动为我们引进了mocha这个Mock框架,让我们能够更复杂的入手下手事情。先看一个针对HashMap的Mock测试吧:
map=mock(HashMap) #=>mockjava.util.HashMap类,假如是接口能够间接new出来,比方Map.new
map.expects(:size).returns(5)#=>摹拟并希冀挪用size办法时前往5
assert_equal5,map.size #=>断言,和JUnit断言十分类似
EasyMock是个盛行的开源JavaMock测试框架,在它的官方网站的文档中恰好有怎样使用Mock举行测试的示例,为了便利申明,我将间接援用这个示例,并用JRuby完成基于Mock的测试。起首我们有一个接口:
//合作者接口,用以跟踪合作文档的相干形态
publicinterfaceCollaborator{
voiddocumentAdded(Stringtitle);//当新增文档时触发
voiddocumentChanged(Stringtitle);//当文档改动时触发
voiddocumentRemoved(Stringtitle);//当文档被删除时触发
bytevoteForRemoval(Stringtitle); //当文档被共享,并举行删除操纵是,实行投票的举措
byte[]voteForRemovals(String[]title);//同上,不外能够同时投票多个文档
}
在这个示例中,另有一个ClassUnderTest类完成了办理合作文档的相干逻辑,简化示例代码以下:
publicclassClassUnderTest{
//...
publicvoidaddListener(Collaboratorlistener){
//增添合作者
}
publicvoidaddDocument(Stringtitle,byte[]document){
//...
}
publicbooleanremoveDocument(Stringtitle){
//...
}
publicbooleanremoveDocuments(String[]titles){
//...
}
}
<p>
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。 |
|