ʹÓÃEasyMock¸üÇáËɵؽøÐвâÊÔ

·¢±íÓÚ£º2014-7-10 10:45

×ÖÌ壺´ó ÖРС | ÉÏһƪ | ÏÂһƪ | ÎÒҪͶ¸å

 ×÷ÕߣºElliotte Rusty Harol    À´Ô´£º51TestingÈí¼þ²âÊÔÍø²É±à

¡¡¡¡²âÊÔÇý¶¯¿ª·¢ÊÇÈí¼þ¿ª·¢µÄÖØÒª²¿·Ö¡£Èç¹û´úÂë²»½øÐвâÊÔ£¬¾ÍÊDz»¿É¿¿µÄ¡£ËùÓдúÂ붼±ØÐë²âÊÔ£¬¶øÇÒÀíÏëÇé¿öÏÂÓ¦¸ÃÔÚ±àд´úÂë֮ǰ±àд²âÊÔ¡£µ«ÊÇ£¬ÓÐЩ¶«Î÷ÈÝÒײâÊÔ£¬ÓÐЩ¶«Î÷²»ÈÝÒס£Èç¹ûÒª±àдһ¸ö´ú±í»õ±ÒÖµµÄ¼òµ¥µÄÀ࣬ÄÇôºÜÈÝÒײâÊÔ°Ñ $1.23 ºÍ $2.8 Ïà¼ÓÊÇ·ñÄܹ»µÃ³ö $4.03£¬¶ø²»ÊÇ $3.03 »ò $4.029999998¡£²âÊÔÊÇ·ñ²»»á³öÏÖ $7.465 ÕâÑùµÄ»õ±ÒÖµÒ²²»Ì«À§ÄÑ¡£µ«ÊÇ£¬ÈçºÎ²âÊÔ°Ñ $7.50 ת»»Îª €5.88 µÄ·½·¨ÄØ£¨ÓÈÆäÊÇÔÚͨ¹ýÁ¬½ÓÊý¾Ý¿â²éѯËæʱ±ä¶¯µÄ»ãÂÊÐÅÏ¢µÄÇé¿öÏ£©£¿ÔÚÿ´ÎÔËÐгÌÐòʱ£¬amount.toEuros() µÄÕýÈ·½á¹û¶¼¿ÉÄÜÓб仯¡£
¡¡¡¡´ð°¸ÊÇ mock ¶ÔÏó¡£²âÊÔ²¢²»Í¨¹ýÁ¬½ÓÕæÕýµÄ·þÎñÆ÷À´»ñÈ¡×îеĻãÂÊÐÅÏ¢£¬¶øÊÇÁ¬½ÓÒ»¸ö mock ·þÎñÆ÷£¬Ëü×ÜÊÇ·µ»ØÏàͬµÄ»ãÂÊ¡£ÕâÑù¾Í¿ÉÒԵõ½¿ÉÔ¤²âµÄ½á¹û£¬¿ÉÒÔ¸ù¾ÝËü½øÐвâÊÔ¡£±Ï¾¹£¬²âÊÔµÄÄ¿±êÊÇ toEuros() ·½·¨ÖеÄÂß¼­£¬¶ø²»ÊÇ·þÎñÆ÷ÊÇ·ñ·¢ËÍÕýÈ·µÄÖµ¡££¨ÄÇÊǹ¹½¨·þÎñÆ÷µÄ¿ª·¢ÈËÔ±Òª²ÙÐĵÄÊ£©¡£ÕâÖÖ mock ¶ÔÏóÓÐʱºò³ÆΪ fake¡£
¡¡¡¡mock ¶ÔÏó»¹ÓÐÖúÓÚ²âÊÔ´íÎóÌõ¼þ¡£ÀýÈ磬Èç¹û toEuros() ·½·¨ÊÔͼ»ñÈ¡×îеĻãÂÊ£¬µ«ÊÇÍøÂçÖжÏÁË£¬ÄÇô»á·¢Éúʲô£¿¿ÉÒÔ°ÑÒÔÌ«ÍøÏß´Ó¼ÆËã»úÉϰγöÀ´£¬È»ºóÔËÐвâÊÔ£¬µ«ÊDZàдһ¸öÄ£ÄâÍøÂç¹ÊÕ쵀 mock ¶ÔÏóʡʵöࡣ
¡¡¡¡mock ¶ÔÏ󻹿ÉÒÔ²âÊÔÀàµÄÐÐΪ¡£Í¨¹ý°Ñ¶ÏÑÔ·ÅÔÚ mock ´úÂëÖУ¬¿ÉÒÔ¼ì²éÒª²âÊԵĴúÂëÊÇ·ñÔÚÊʵ±µÄʱºò°ÑÊʵ±µÄ²ÎÊý´«µÝ¸øËüµÄЭ×÷Õß¡£¿ÉÒÔͨ¹ý mock ²é¿´ºÍ²âÊÔÀàµÄ˽Óв¿·Ö£¬¶ø²»ÐèҪͨ¹ý²»±ØÒªµÄ¹«¹²·½·¨¹«¿ªËüÃÇ¡£
¡¡¡¡×îºó£¬mock ¶ÔÏóÓÐÖúÓÚ´Ó²âÊÔÖÐÏû³ýÒÀÀµÏî¡£ËüÃÇʹ²âÊÔ¸üµ¥Ôª»¯¡£Éæ¼° mock ¶ÔÏóµÄ²âÊÔÖеÄʧ°ÜºÜ¿ÉÄÜÊÇÒª²âÊԵķ½·¨ÖеÄʧ°Ü£¬²»Ì«¿ÉÄÜÊÇÒÀÀµÏîÖеÄÎÊÌâ¡£ÕâÓÐÖúÓÚ¸ôÀëÎÊÌâºÍ¼ò»¯µ÷ÊÔ¡£
¡¡¡¡EasyMock ÊÇÒ»¸öÕë¶Ô Java ±à³ÌÓïÑԵĿª·ÅÔ´Âë mock ¶ÔÏó¿â£¬¿ÉÒÔ°ïÖúÄú¿ìËÙÇáËɵش´½¨ÓÃÓÚÕâЩÓÃ;µÄ mock ¶ÔÏó¡£EasyMock ʹÓö¯Ì¬´úÀí£¬ÈÃÄúÖ»ÓÃÒ»ÐдúÂë¾ÍÄܹ»´´½¨ÈκνӿڵĻù±¾ÊµÏÖ¡£Í¨¹ýÌí¼Ó EasyMock ÀàÀ©Õ¹£¬»¹¿ÉÒÔΪÀà´´½¨ mock¡£¿ÉÒÔÕë¶ÔÈκÎÓÃ;ÅäÖÃÕâЩ mock£¬´Ó·½·¨Ç©ÃûÖеļòµ¥ÑƲÎÊýµ½¼ìÑéһϵÁз½·¨µ÷ÓõĶàµ÷ÓòâÊÔ¡£
¡¡¡¡EasyMock ¼ò½é
¡¡¡¡ÏÖÔÚͨ¹ýÒ»¸ö¾ßÌåʾÀýÑÝʾ EasyMock µÄ¹¤×÷·½Ê½¡£Çåµ¥ 1 ÊÇÐé¹¹µÄ ExchangeRate ½Ó¿Ú¡£ÓëÈκνӿÚÒ»Ñù£¬½Ó¿Úֻ˵Ã÷ʵÀýÒª×öʲô£¬¶ø²»Ö¸¶¨Ó¦¸ÃÔõô×ö¡£ÀýÈ磬Ëü²¢Ã»ÓÐÖ¸¶¨´Ó Yahoo ½ðÈÚ·þÎñ¡¢Õþ¸®»¹ÊÇÆäËûµØ·½»ñÈ¡»ãÂÊÊý¾Ý¡£
¡¡¡¡Çåµ¥ 1. ExchangeRate
¡¡¡¡import java.io.IOException;
¡¡¡¡public interface ExchangeRate {
¡¡¡¡double getRate(String inputCurrency, String outputCurrency) throws IOException;
¡¡¡¡}
¡¡¡¡Çåµ¥ 2 ÊǼٶ¨µÄ Currency ÀàµÄ¹Ç¼Ü¡£Ëüʵ¼ÊÉÏÏ൱¸´ÔÓ£¬ºÜ¿ÉÄÜ°üº¬ bug¡££¨Äú²»±Ø²ÂÁË£ºÈ·ÊµÓÐ bug£¬Êµ¼ÊÉÏÓв»ÉÙ£©¡£
¡¡¡¡Çåµ¥ 2. Currency Àà
import java.io.IOException;
public class Currency {
private String units;
private long amount;
private int cents;
public Currency(double amount, String code) {
this.units = code;
setAmount(amount);
}
private void setAmount(double amount) {
this.amount = new Double(amount).longValue();
this.cents = (int) ((amount * 100.0) % 100);
}
public Currency toEuros(ExchangeRate converter) {
if ("EUR".equals(units)) return this;
else {
double input = amount + cents/100.0;
double rate;
try {
rate = converter.getRate(units, "EUR");
double output = input * rate;
return new Currency(output, "EUR");
} catch (IOException ex) {
return null;
}
}
}
public boolean equals(Object o) {
if (o instanceof Currency) {
Currency other = (Currency) o;
return this.units.equals(other.units)
&& this.amount == other.amount
&& this.cents == other.cents;
}
return false;
}
public String toString() {
return amount + "." + Math.abs(cents) + " " + units;
}
}
31/3123>
¡¶2023Èí¼þ²âÊÔÐÐÒµÏÖ×´µ÷²é±¨¸æ¡·¶À¼Ò·¢²¼~

¹Ø×¢51Testing

ÁªÏµÎÒÃÇ

¿ì½ÝÃæ°å Õ¾µãµØͼ ÁªÏµÎÒÃÇ ¹ã¸æ·þÎñ ¹ØÓÚÎÒÃÇ Õ¾³¤Í³¼Æ ·¢Õ¹Àú³Ì

·¨ÂɹËÎÊ£ºÉϺ£À¼µÏÂÉʦÊÂÎñËù ÏîÆåÂÉʦ
°æȨËùÓÐ ÉϺ£²©Îª·åÈí¼þ¼¼Êõ¹É·ÝÓÐÏÞ¹«Ë¾ Copyright©51testing.com 2003-2024
ͶËß¼°Òâ¼û·´À¡£ºwebmaster@51testing.com; ÒµÎñÁªÏµ£ºservice@51testing.com 021-64471599-8017

»¦ICP±¸05003035ºÅ

»¦¹«Íø°²±¸ 31010102002173ºÅ