• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • EasyMock與JMock的比較

    發表于:2009-04-01來源:作者:點擊數: 標簽:JMockEasyMock
    本文假設讀者已經了解了MockObjects的使用目的和基本方式,不對MockTest之類的技術作過多解釋。僅提醒一句:“不要 測試 你的MockObjects”。 本文作為一個評測結果的同時,也可以作為EasyMock和jMock的簡短教程。他們本身都很易用,可惜帶的示例過于復雜,

    本文假設讀者已經了解了MockObjects的使用目的和基本方式,不對MockTest之類的技術作過多解釋。僅提醒一句:“不要測試你的MockObjects”。

    本文作為一個評測結果的同時,也可以作為EasyMock和jMock的簡短教程。他們本身都很易用,可惜帶的示例過于復雜,都用了過多的模式??催^本文的例子,相信就可以從容的在項目中使用了。

    Java中常用的MockObjects有EasyMock和jMock等。其中EasyMock開發較早,已經出了1.1版本,而jMock前幾天才剛推出了1.0 final。作為剛成熟的小弟弟,jMock有什么競爭實力呢?

    本比較針對于以下幾個方面,代碼請見附件。

    1是否能夠對具體類進行模擬(當然,對接口模擬是基本功能)

    2是否能夠對方法名,參數,返回值進行動態控制

    3基本代碼行數

    4是否能夠對具有構造參數的具體類模擬

       現在比較開始了。首先制作若干測試文件,很簡單。要模擬的有一個接口和一個具體類,叫做TheInterfaceToMock和TheClassToMock,另外,提供方法SampleReturn sampleMethod(Parameter p);以及同名無參數方法。

       第一個測試是針對TheInterfaceToMock,提供ParameterImpl和SampleReturnImpl作為期待的參數和返回值。

        jMock代碼如下:  

    publiclearcase/" target="_blank" >cclassJMockUsageextendsMockObjectTestCase{

       publicvoidtestReturnValueWithParemeter(){       

           //構造Mock控制器

           Mockm=newMock(TheInterfaceToMock.class);

           //這是要測試MockObject

           TheInterfaceToMockmock=(TheInterfaceToMock)m.proxy();

           //期待的返回值

           SampleReturnsr=newSampleReturnImpl();

           //期待的參數

           Parameterp=newParameterImpl();

           

           //控制器,期待一次,方法sampleMethod,參數等于p(equals),將返回sr

           m.expects(once()).method("sampleMethod")

    .with(eq(p)).will(returnValue(sr));

                  

           //正式執行mockobject

           SampleReturnret=mock.sampleMethod(newParameterImpl());

           //確定返回值是相同的

           assertSame(sr,ret);

       }

     

    }

     

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>