欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
使用Mock Object進(jìn)行測試


使用Mock Object進(jìn)行測試,主要是用來(lái)模擬那些在應用中不容易構造(如HttpServletRequest必須在Servlet容器中才能構造出來(lái))或者比較復雜的對象(如JDBC中的ResultSet對象)從而使測試順利進(jìn)行的工具。

目前,在Java陣營(yíng)中主要的Mock測試工具有JMock,MockCreator,Mockrunner,EasyMock,MockMaker等,在微軟的.Net陣營(yíng)中主要是Nmock,.NetMock等。

以下就對在Java中使用的Mock Object進(jìn)行測試的常用工具做一下使用說(shuō)明。

JMock

簡(jiǎn)介

請訪(fǎng)問(wèn)http://www.jmock.org。

準備

1.        獲取J2SDK;

2.        獲取JUnit V3.8.1(從http://www.junit.org獲取開(kāi)發(fā)包);

3.        獲取JMock V1.0(從http://www.jmock.org獲取JMock開(kāi)發(fā)包)。

4.        為了開(kāi)發(fā)方便,建議使用一個(gè)好IDE。以下例子中的代碼均是在Eclipse V3.0環(huán)境下進(jìn)行的調試。

例子一

以下是一個(gè)簡(jiǎn)單例子,代碼如下:

package test1;

 

import org.jmock.*;

import javax.servlet.http.*;

 

public class MockRequestTest extends MockObjectTestCase{

       public void testMockRequest1(){

              //構造一個(gè)Mock對象

        Mock mock = new Mock(HttpServletRequest.class);

       

        //設置要執行的操作,以下設置表示要調用一次HttpServletRequest對象的

        //getParameter方法,傳遞的參數是"name",期望的返回是"kongxx"

        mock.expects(once()).method("getParameter").with(eq("name")).will(returnValue("kongxx"));

       

        //根據Mock對象獲取一個(gè)HttpServletRequest對象

        HttpServletRequest request = (HttpServletRequest)mock.proxy();

       

        //斷言調用結果

        assertEquals("kongxx" ,request.getParameter("name"));       

    }

       public void testMockRequest2(){

              //構造一個(gè)Mock對象

        Mock mock = new Mock(HttpServletRequest.class);

       

        //設置要執行的操作,以下設置表示要調用一次HttpServletRequest對象的

        //getParameter方法,傳遞的參數是"name",期望的返回是"kongxx"

        mock.expects(once()).method("getParameter").with(eq("name")).will(returnValue("kongxx"));

       

        //根據Mock對象獲取一個(gè)HttpServletRequest對象

        HttpServletRequest request = (HttpServletRequest)mock.proxy();

       

        //調用HttpServletRequest對象的方法

        request.getParameter("name");       

       

        //驗證執行結果

        mock.verify();

    }

}

編譯并將其當做一個(gè)Test Case運行,會(huì )發(fā)現兩個(gè)測試方法均測試成功。

例子二

MyClass需要測試的類(lèi),提供了兩個(gè)方法getName和getPassword,都使用HttpServletRequest作為輸入參數并返回從HttpServletRequest中取得的參數,具體代碼如下:

package test2;

 

import javax.servlet.http.*;

 

public class MyClass {

       public String getName(HttpServletRequest request) {

              return request.getParameter("name");

       }

      

       public String getPassword(HttpServletRequest request) {

              return request.getParameter("password");

       }

}

TestMyClass測試類(lèi),其中構造了一個(gè)假的HttpServletRequest對象,用來(lái)測試MyClass中的getName和getPassword方法,代碼如下:

package test2;

 

import org.jmock.*;

import javax.servlet.http.*;

 

public class TestMyClass extends MockObjectTestCase{

       private MyClass myclass ;

       private Mock mockRequest ;

       private HttpServletRequest request ;

      

       public void setUp() {       

              myclass = new MyClass();

             

              //構造一個(gè)Mock對象

              mockRequest = new Mock(HttpServletRequest.class);

             

              //根據Mock對象獲取一個(gè)HttpServletRequest對象

              request = (HttpServletRequest)mockRequest.proxy();

       }

       public void tearDown() {

              //TODO

       }

       public void testGetName(){

              //設置要執行的操作,以下設置表示要調用一次HttpServletRequest對象的

        //getParameter方法,傳遞的參數是"name",期望的返回是"kongxx"            

              mockRequest.expects(atLeastOnce()).method("getParameter").with(eq("name")).will(returnValue("kongxx"));

             

              assertNotNull(myclass.getName(request));

        assertEquals("kongxx" ,myclass.getName(request));      

       }

       public void testGetPassword(){

              //設置要執行的操作,以下設置表示要調用一次HttpServletRequest對象的

        //getParameter方法,傳遞的參數是"password",期望的返回是"123456789"     

              mockRequest.expects(atLeastOnce()).method("getParameter").with(eq("password")).will(returnValue("123456789"));

             

              assertNotNull(myclass.getPassword(request));

        assertEquals("123456789" ,myclass.getPassword(request));

       }

}

編譯并將其當做一個(gè)Test Case運行,會(huì )發(fā)現兩個(gè)測試方法均測試成功。

小結

無(wú)

EasyMock

簡(jiǎn)介

請訪(fǎng)問(wèn)http://www.easymock.org。

準備

1.        獲取J2SDK;

2.        獲取JUnit V3.8.1(從http://www.junit.org獲取開(kāi)發(fā)包);

3.        獲取EasyMock V1.1(從http://www.easymock.org獲取EasyMock開(kāi)發(fā)包)。

4.        為了開(kāi)發(fā)方便,建議使用一個(gè)好IDE。以下例子中的代碼均是在Eclipse V3.0環(huán)境下進(jìn)行的調試。

例子一

以下是一個(gè)簡(jiǎn)單例子,為了方便對比,這里重新實(shí)現了JMock例子一,代碼如下:

package test1;

 

import org.easymock.*;

import junit.framework.*;

import javax.servlet.http.*;

 

public class MockRequestTest extends TestCase{

    private MockControl control;

    private HttpServletRequest mockRequest;

 

       public void testMockRequest(){

              //創(chuàng )建一個(gè)Mock HttpServletRequest的MockControl對象

              control = MockControl.createControl(HttpServletRequest.class);

             

              //獲取一個(gè)Mock HttpServletRequest對象

              mockRequest = (HttpServletRequest) control.getMock();

                    

              //設置期望調用的Mock HttpServletRequest對象的方法

              mockRequest.getParameter("name");

             

              //設置調用方法期望的返回值,并指定調用次數

              //以下后兩個(gè)參數表示最少調用一次,最多調用一次

              control.setReturnValue("kongxx" ,1 ,1);      

             

              //設置Mock HttpServletRequest的狀態(tài),

              //表示此Mock HttpServletRequest對象可以被使用

              control.replay();

             

              //使用斷言檢查調用

              assertEquals("kongxx",mockRequest.getParameter("name"));

             

              //驗證期望的調用

              control.verify();

    }

}

編譯并將其當做一個(gè)Test Case運行,會(huì )發(fā)現兩個(gè)測試方法均測試成功。

例子二

同例子一樣,對JMock例子二重新實(shí)現產(chǎn)生了EasyMock的例子二。

需要測試的類(lèi)代碼如下:

package test2;

 

import javax.servlet.http.*;

 

public class MyClass {

       public String getName(HttpServletRequest request) {

              return request.getParameter("name");

       }

      

       public String getPassword(HttpServletRequest request) {

              return request.getParameter("password");

       }

}

測試類(lèi)代碼如下:

package test2;

 

import org.easymock.*;

import junit.framework.*;

import javax.servlet.http.*;

 

public class TestMyClass extends TestCase{

      

    private MockControl control;

    private HttpServletRequest mockRequest;

    private MyClass myclass ;

      

       public void setUp() {       

              myclass = new MyClass();

             

              //創(chuàng )建一個(gè)Mock HttpServletRequest的MockControl對象

              control = MockControl.createControl(HttpServletRequest.class);

             

              //獲取一個(gè)Mock HttpServletRequest對象

              mockRequest = (HttpServletRequest) control.getMock();             

       }

       public void tearDown() {

              //TODO

       }

       public void testGetName(){

              //設置期望調用的Mock HttpServletRequest對象的方法

              mockRequest.getParameter("name");

             

              //設置調用方法期望的返回值,并指定調用次數

              //以下后兩個(gè)參數表示最少調用一次,最多調用一次

              control.setReturnValue("kongxx" ,1 ,2);      

             

              //設置Mock HttpServletRequest的狀態(tài),

              //表示此Mock HttpServletRequest對象可以被使用

              control.replay();

             

              //使用斷言檢查調用

              assertNotNull(myclass.getName(mockRequest));

              assertEquals("kongxx",myclass.getName(mockRequest));

             

              //驗證期望的調用

              control.verify();   

       }

       public void testGetPassword(){

              //設置期望調用的Mock HttpServletRequest對象的方法

              mockRequest.getParameter("password");

             

              //設置調用方法期望的返回值,并指定調用次數

              //以下后兩個(gè)參數表示最少調用一次,最多調用一次

              control.setReturnValue("kongxx" ,1,2);

             

              //設置Mock HttpServletRequest的狀態(tài),

              //表示此Mock HttpServletRequest對象可以被使用

              control.replay();

             

              //使用斷言檢查調用

              assertNotNull(myclass.getPassword(mockRequest));

              assertEquals("kongxx",myclass.getPassword(mockRequest));

             

              //驗證期望的調用

              control.verify();  

       }

}

編譯并將其當做一個(gè)Test Case運行,會(huì )發(fā)現兩個(gè)測試方法均測試成功。

小結

無(wú)

總結

無(wú)

參考資料

l        http://www.mockobjects.com/介紹了關(guān)鍵Mock Object的基本概念和目前在各個(gè)環(huán)境下主要的Mock測試工具。

l        JMock的主頁(yè)http://www.jmock.org,可以獲取JMock的最新代碼和開(kāi)發(fā)包,以及一些說(shuō)明文檔。

l        EasyMock的主頁(yè)http://www.easymock.org,可以獲取JMock的最新代碼和開(kāi)發(fā)包,以及一些說(shuō)明文檔。

l        NMock的主頁(yè)http://www.nmock.org,介紹了在Microsoft .Net平臺上進(jìn)行Mock測試的開(kāi)發(fā)工具。

l        MockCreator主頁(yè)http://mockcreator.sourceforge.net/。

l        MockMaker主頁(yè)http://mockmaker.sourceforge.net/。

【日期:2006-9-3】【作者:不祥】【轉載自:開(kāi)店樂(lè )】

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
什么是mock測試(3)
使用MOCK對象進(jìn)行單元測試 - zhangwenjun8045 - JavaEye技術(shù)網(wǎng)...
使用EasyMock使單元測試更加容易
Java 各種Mock工具比較
2.13 單元測試
CSDN技術(shù)中心 MockObjects的選擇:EasyMock與JMock的比較
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久