??xml version="1.0" encoding="utf-8" standalone="yes"?>九色蝌蚪在线,青青草久久爱,欧美另类精品xxxx孕妇http://www.aygfsteel.com/patsYang/zh-cnFri, 20 Jun 2025 01:01:16 GMTFri, 20 Jun 2025 01:01:16 GMT60EasyMock单用http://www.aygfsteel.com/patsYang/archive/2007/10/05/150559.htmlpatsYangpatsYangFri, 05 Oct 2007 07:33:00 GMThttp://www.aygfsteel.com/patsYang/archive/2007/10/05/150559.htmlhttp://www.aygfsteel.com/patsYang/comments/150559.htmlhttp://www.aygfsteel.com/patsYang/archive/2007/10/05/150559.html#Feedback0http://www.aygfsteel.com/patsYang/comments/commentRss/150559.htmlhttp://www.aygfsteel.com/patsYang/services/trackbacks/150559.html        在实际编?font face="Times New Roman">unit test的过E中Q很多情况下我们会需要用其他的lgQ如和数据库相关的测试)。当我们是用第三方提供的组件时Q这q不是太大的问题Q因为我们可以假设他们是无错的。但是一旦这些组件是我们自己的组件时Q问题就暴露出来了?/span>

“单元试出错了,但到底是谁的错。我的?他的Q?#8221;Q这U情冉|然违反了试的独立性原?/span>。出现这U情况得这个测试无法确切的指出是那个单元出C问题Q照成了排错的困难,而且也浪费了旉。同Ӟq分的将单元的测试代码依赖于其他单元Q也照成了其他一些很现实的问题:

在所依赖的单元完成之前,无法利的编写单元测试?/span>

产生环境的依赖性,如运行一?/span>HttpServletRequest处理器的试代码必须启动一?/span>servlet容器?/span>

所有这些问题,都可以?/span>Mock Object来解冟뀂用它的前提是Q所依赖单元的接口必d义清楚。?/span>EasyMock正是Zq一目的而生的?/span>

使用目的

       通过模拟unit test所需要的lgQ已辑ֈ隔离各个unit test的目的。目前的版本1.1Q它所需要的环境?/span>jdk1.3.1以上?/span>junit3.8.1以上?/span>

可以?/span>http://sourceforge.net/projects/easymock/处下载?/span>

用法

1.       EasyMock采用“记录-----回放”的工作模式,基本使用步骤Q?/span>

-          创徏Mock对象的控制对?/span>Control?/span>

-          从控制对象中获取所需要的Mock对象?/span>

-          记录试Ҏ中所使用到的Ҏ和返回倹{?/span>

-          Control对象?#8220;回放”模式?/span>

-          q行试?/span>

-          在测试完毕后Q确?/span>Mock对象已经执行了刚才定义的所有操作?/span>

2.       使用举例Q假N要测试的对象?/span>RequestUtilQ所需要测试的Ҏ?/span>getBoolean。此时我们需要模拟一?/span>HttpServletRequest对象?/span>

public void testGetStringHttpServletRequestString() {

public void testGetBoolean() {

   //创徏Mock对象的控制器

   MockControl  control= MockControl.createControl( HttpServletRequest.class);

   //获取Mock对象

   HttpServletRequest  mock= (HttpServletRequest)control.getMock();

   //getBoolean中要使用的方法和q回?/span>

control.expectAndReturn( mock.getParameter( "test"), null);
            
        
//讄控制器ؓreplay模式

        control.replay();

        //执行试

        assertNull( RequestUtil.getString( mock, "test"));

        //

        control.verify();

    }

}

    通过EasyMockQ执行这D|试代码完全不需要启动一?/span>servlet容器Q在命o行的方式下即可完成,非常的方ѝ?/span>

3.       记录需要用的Mock的行为。在使用一?/span>Mock对象之前Q需要设|我们要用到的方法,以及每个Ҏ的返回倹{对于那些没有设|的ҎQ一旦调用(控制器处?/span>replay模式Q,EasyMock׃抛出异常。记录一个方法,通常可以分成2?/span>Q首先,如同使用正常对象调用q个ҎQ然后,使用控制器的setReturnValue函数讄卛_。在1.1中,提供?/span>expectAndReturn函数Q?/span>2步可以合而ؓ一。主要的函数大致如下Q?/span>

-          expectAndReturnQ设|期望调用的函数Q以及返回?/span>

-          expectAndThrowQ设|期望调用的函数Q同时期望该ơ调用抛出异?/span>

-          setReturnValueQ设|上一ơ调用的q回|如上ơ调用时Q?/span>request.getparameter( “test”)Q此处设|?/span>request.getparameter( “test”)的返回|

-          setThrowableQ设|上ơ调用抛出的异常

?/span>EasyMock中还可以讄调用所执行的次敎ͼ具体l节请参见对应的javaDoc?/span>

4.       使用举例Q?/span>

MockControl  control= MockControl.createControl( HttpServletRequest.class);

HttpServletRequest  mock= (HttpServletRequest)control.getMock();

mock.getParameter( "test");

//讄W一ơ调?/span>request.getParameter的返回?/span>

control.setReturnValue( null, 1);

//讄W二ơ调?/span>request.getParameter的返回?/span>

control.setReturnValue("this is a test", 1);

control.replay();

assertEquals( RequestUtil.getString( mock, "test", "haha"), "haha");

assertEquals( RequestUtil.getString( mock, "test"), "this is a test");

control.verify();

5.       ?/span>Mock对象使用l束后,务必调用控制器的verify函数Q以认Mock对象的方法得C调用?/span>

6.       调用Ҏ的次序,使用Strict。有Ӟ试代码依赖于被依赖lg的方法的ơ序。如在测试与数据库相关代码时Q测试代码很有可能是q样的次序:先打开数据库链接,执行操作Q关闭链接。ؓ了更好的试q样的代码,可以使用MockControl.createStrictControl()来创Z个严格的Mock对象控制器,在其中,他会规定Mock出来的对象的调用ơ序?/span>

以上?/span>EasyMock的主要用,至于其他的用法,请参见具体的文?/span>

PSQ?/font>当自己动手实?/span>Mock对象Ӟ不要?/span>Mock对象中实C务逻辑?/span>



patsYang 2007-10-05 15:33 发表评论
]]>
N我们真的只是做我们应该做的吗Q?/title><link>http://www.aygfsteel.com/patsYang/archive/2007/01/17/patsYang_2007_01_17.html</link><dc:creator>patsYang</dc:creator><author>patsYang</author><pubDate>Wed, 17 Jan 2007 12:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/patsYang/archive/2007/01/17/patsYang_2007_01_17.html</guid><wfw:comment>http://www.aygfsteel.com/patsYang/comments/94497.html</wfw:comment><comments>http://www.aygfsteel.com/patsYang/archive/2007/01/17/patsYang_2007_01_17.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/patsYang/comments/commentRss/94497.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/patsYang/services/trackbacks/94497.html</trackback:ping><description><![CDATA[我不知道自己是怎么回事Q也不知道到底是因ؓ什么!我的生活永远都是悲喜交加的!也许一天中p发生许多的变化!而且也习惯了今天站在很高的地方!明天摔得很惨!但是自己又是dƢ说喜欢q求刺激的生z!但我最q我才发?原来我所q求的生zL天天有追求有收获的!我可能害怕承担责任,但是我又惛_承担很多的责任!因ؓ在我看来Q只要是领导交给我Q务,׃表对我的信QQ那么我会尽最大努力去做好Q不知道是怎么回事Q虽说刚刚上班没有多长时_我也不知道这L好算坏!我会把现在做的项目当成自q事情Q哪个地方出了问题!我可以很睡觉!只是想不辜负M人!但是我又知道在工作中l果比过E重要的多!所以我很失望,也很隑֏Q很多的事情没有成功Q我不知道是我错q是领导有问题!我ƈ不是惌I责任,我只是不惛_一件事情失败的时候,我所有的努力都不会再被看刎ͼ我可以以w体Zh完成我的努力Q只是ؓ了想把事情做好!真的只是惌为领导分担些事情Q但是当我真的抗不住的时候!我又能怎么办呢Q也许工作中本不应该d力替他h分担什么的QM今天领导说了一句让我很是失望的话!也许可以说是有些伤心吧!所以我x只做我能做的Q做我应该做的!<img src ="http://www.aygfsteel.com/patsYang/aggbug/94497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/patsYang/" target="_blank">patsYang</a> 2007-01-17 20:57 <a href="http://www.aygfsteel.com/patsYang/archive/2007/01/17/patsYang_2007_01_17.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>my hearthttp://www.aygfsteel.com/patsYang/archive/2006/12/27/patsYang.htmlpatsYangpatsYangWed, 27 Dec 2006 14:28:00 GMThttp://www.aygfsteel.com/patsYang/archive/2006/12/27/patsYang.htmlhttp://www.aygfsteel.com/patsYang/comments/90391.htmlhttp://www.aygfsteel.com/patsYang/archive/2006/12/27/patsYang.html#Feedback0http://www.aygfsteel.com/patsYang/comments/commentRss/90391.htmlhttp://www.aygfsteel.com/patsYang/services/trackbacks/90391.html   现在工作q边只有我一个hQ很多事情都在我的n上!q几天几乎就没有怎么睡觉Q我唯一惛_的就是能够把事情做好Q可是真的是遇到了很多困难!每天写工作日志的时候都不知道应该如何去写!因ؓq几天工作日志几乎就是一LQ不是怕领g说什么!只不q真的觉得自己很没用啊!(只是发泄Q觉得没有泄气!哈哈Q?真的觉得自己好让人失望啊Q呵呵!现在又要写工作日报了Q调节一下自己!完了l箋开工了Q我会告诉自己!最大的努力Q做好自q事情Q虽然工作讲求效率!虽然我有很多的不会!但是臛_我是力的!我做到无愧于心!我想够了!
   我会l箋努力Q因为 大丈夫!横行天下Q?img src ="http://www.aygfsteel.com/patsYang/aggbug/90391.html" width = "1" height = "1" />

patsYang 2006-12-27 22:28 发表评论
]]>
վ֩ģ壺 | ʯ| | ½| | ˰| ¡| żҽ| ˹| Ƹ| ҽ| | Ԫ| | | | | | | ¹| | Խ| Ϫ| ߴ| | ɽ| ϳ| ³ľ| ʷ| Ҵ| | | ƽ| Ӽ| | | | | | | |