常常聽人說mock測試,究竟什麼是mock測試呢?mock測試能解決什麼問題?mock測試要如何作呢?今天爲你們作簡單介紹,以後會有詳細的mock測試,感謝你們對測試夢工廠的持續關注。java
概念工具
mock測試就是在測試過程中,對於某些不容易構造或者不容易獲取的對象,用一個虛擬的對象來建立以便測試的測試方法。測試
MockObject
使用Mock Object進行測試,主要是用來模擬那些在應用中不容易構造(如HttpServletRequest必須在Servlet容器中才能構造出來)或者比較複雜的對象(如JDBC中的ResultSet對象)從而使測試順利進行的工具。this
目前,在Java陣營中主要的Mock測試工具備JMock,MockCreator,Mockrunner,EasyMock,MockMaker等,在微軟的.Net陣營中主要是Nmock,.NetMock等。spa
mock對象實例code
一個鬧鐘根據時間來進行提醒服務,若是過了下午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
;
}
}
|
長按二維碼識別關注,您的支持是咱們最大的動力。 ci
公衆號:測試夢工廠get
QQ一羣:300897805