經常聽人說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