仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 622|回复: 11
打印 上一主题 下一主题

[学习教程] 来看使用Ruby简化你的Java测试(进阶篇)

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:18:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。
admin 该用户已被删除
沙发
发表于 2015-1-20 19:54:42 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
爱飞 该用户已被删除
板凳
发表于 2015-1-22 22:47:01 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
第二个灵魂 该用户已被删除
地板
发表于 2015-1-25 08:59:27 来自手机 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
冷月葬花魂 该用户已被删除
5#
发表于 2015-1-28 10:57:53 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
柔情似水 该用户已被删除
6#
发表于 2015-2-2 21:52:01 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
透明 该用户已被删除
7#
发表于 2015-2-5 03:56:55 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
金色的骷髅 该用户已被删除
8#
发表于 2015-2-21 20:04:30 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
活着的死人 该用户已被删除
9#
发表于 2015-3-6 21:17:54 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
因胸联盟 该用户已被删除
10#
发表于 2015-3-13 00:08:22 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
若相依 该用户已被删除
11#
发表于 2015-3-13 09:10:48 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
分手快乐 该用户已被删除
12#
发表于 2015-3-20 18:11:15 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 05:25

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表