mock測試到底是什么?


 

    ​    ​經常聽人說mock測試,究竟什么是mock測試呢?mock測試能解決什么問題?mock測試要如何做呢?今天為大家做簡單介紹,之后會有詳細的mock測試,感謝大家對測試夢工廠的持續關注。

 

概念

    ​    ​mock測試就是在測試過程中,對於某些不容易構造或者不容易獲取的對象,用一個虛擬的對象來創建以便測試的測試方法。

 

 

MockObject

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

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

 

mock對象實例

編輯

    ​    ​一個鬧鍾根據時間來進行提醒服務,如果過了下午5點鍾就播放音頻文件提醒大家下班了,如果我們要利用真實的對象來測試的話就只能苦苦等到下午五點,然后把耳朵放在音箱旁,我們應該利用mock對象[1]  來進行測試,這樣我們就可以模擬控制時間了,而不用苦苦等待時鍾轉到下午5點鍾了。下面是代碼:

1
2
3
4
5
6
7
8
9
public  abstract  class  Environmental{
     boolean  playedWav= false ;
     public  abstract   long  getTime();
     public  abstract   void   playWavFile(String fileName);
     public  abstract   boolean   wavWasPlayed();
     public  abstract   void   resetWav();
}
 
真實的實現代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public  class  SystemEnvironment  extends  Environmental{
     public  long  getTime(){
         return  System.currentTimeMillis();
     }
     public  void  playWavFile(String  fileName){
         playedWav= true ;
     }
     public  boolean   wavWasPlayed(){
         return  playedWav;
     }
     public  void   resetWav(){
         playedWav= false ;
     }
}
 
下面是mock對象:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public  class  MockSystemEnvironment  extends  Environmental{
     private  long  currentTime;
     public  long  getTime(){
         return  currentTime;
     }
     public  voidsetTime( long   currentTime){
         this .currentTime=currentTime;
     }
     public  void  playWavFile(String  fileName){
         playedWav= true ;
     }
     public  boolean  wavWasPlayed(){
         return  playedWav;
     }
     public  void   resetWav(){
         playedWav= false ;
     }
}

 

 


        長按二維碼識別關注,您的支持是我們最大的動力。       

        公眾號:測試夢工廠

        QQ一群:300897805

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM