1.??????????

?????????????????????????????????С????????????????????????????????????????????Щ??????????????????????????????????????????Servlet??????????????????????

?????????????????????????????????????????????????????????????????£??????С???????????????????????????????????????????????????????????????????л????????????????????????????????????????????е?Υ???????????????????????????????????????????????????????????????????????????????3????????????????????????????????????????????????????????????????????????????????????????????????й????????????????е??????????????????????????

?????????????????????????????????????????????????У?????????????????????????????????????????й?????????????????????е??????????????????????????????????????????????????????????????????????????ЩС???????????????A?????????????B????????????????????????????????????????A????????????????????????£??????????????????????????????????????????????????????????????????????????????????????????????

??????????????????????????????????mock????Mock????????????????????????????

2.???????Mock??????

????????????????Mock????Tim Mackinnon?????????Щ???飺

----- ?????????в???????????(??????????????????????????)

----- ???????????????(????????web????)

----- ?????????Щ??????????(???????????)

----- ??????????????????????

----- ????????????????

----- ???????????????????????α??????(???????????????????????????????????)

----- ???????????????????(???????????????С?飬?????μ??????????????????????????????)

3.??????Mock????

???????mock??????в?????????????????3?????裬??????

----- ??????????????????????

----- ?????????????????

----- ????????????mock???????????????

???????????????ο???????????????????????????????????????????????????????????????????????????????????????????mock???????濴?????????????????????????????????????????????????5????????????????????°??????????????????????????????????????????????????????????????...??????????????????????????mock?????????в???????????????????????????????????????????????5???????

?????????
public interface Environmental {  
private boolean playedWav = false;  
public long getTime();  
public void playWavFile(String fileName);  
public boolean wavWasPlayed();  
public void resetWav();  
}

???????????

public class SystemEnvironment implements 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????

public class MockSystemEnvironment implements Environmental {  
private long currentTime;  
public long getTime() {  
return currentTime;  
}  
public void setTime(long currentTime) {  
this.currentTime = currentTime;  
}  
public void playWavFile(String fileName) {  
playedWav = true;  
}  
public boolean wavWasPlayed() {  
return playedWav;  
}  
public void resetWav() {  
playedWav = false;  
}  
}