锘??xml version="1.0" encoding="utf-8" standalone="yes"?>97亚洲熟妇自偷自拍另类图片,亚洲国产另类久久久精品黑人,亚洲综合av一区二区三区不卡 http://www.tkk7.com/BaoquanInside/category/7875.html鐮旂┒java銆乯2ee鍜孡ucenezh-cnFri, 02 Mar 2007 06:37:45 GMTFri, 02 Mar 2007 06:37:45 GMT60嫻嬭瘯椹卞姩寮鍙戞渚嬩箣鑷姩鍞揣鏈猴紙絎?闆嗭級http://www.tkk7.com/BaoquanInside/archive/2006/02/25/32458.htmlBaoquan InsideBaoquan InsideSat, 25 Feb 2006 15:12:00 GMThttp://www.tkk7.com/BaoquanInside/archive/2006/02/25/32458.htmlhttp://www.tkk7.com/BaoquanInside/comments/32458.htmlhttp://www.tkk7.com/BaoquanInside/archive/2006/02/25/32458.html#Feedback2http://www.tkk7.com/BaoquanInside/comments/commentRss/32458.htmlhttp://www.tkk7.com/BaoquanInside/services/trackbacks/32458.html嫻嬭瘯椹卞姩寮鍙?TDD, Test Driven Development)鏄竴縐嶅緢鏈夋剰鎬濈殑杞歡寮鍙戞柟寮忥紝鏈泦浠ヨ緝灝忕殑姝ヤ紣浣撻獙TDD銆?BR>
/**  A program simulation of an automat.
 *
 *  Director: Zuo Baoquan
 *  Contact me:
 *     Blog:   http://www.tkk7.com/BaoquanInside
 *     MSN: Baoquan.Zuo [at] hotmail.com
 *     Email:  Baoquan.Zuo [at] gmail.com
 *
 *  Copyright 2006 BEC Studio
 */
 
寮曡█錛?/DIV>
錛堣闂鎴彇鑷?A >闈㈠悜瀵硅薄鐨勮璁′笌妯″紡銆?Written by Cay Horstmann) Exercise 2.18
 
璁捐騫跺疄鐜頒竴涓ā鎷熻嚜鍔ㄥ敭璐ф満鐨勭▼搴忋傞氳繃緇欐満鍣ㄦ姇鍏ユ紜殑紜竵錛屼究鍙互璐拱鍒扮浉搴旂殑鍟嗗搧銆傜敤鎴蜂粠涓涓彲鐢ㄧ殑鍟嗗搧鍒楄〃涓夋嫨鍟嗗搧銆佹姇鍏ョ‖甯佸茍寰楀埌鍟嗗搧銆傚鏋滄病鏈夎凍澶熺殑閽卞竵鎴栫敱浜庢鍟嗗搧宸查攢鍞畬姣曪紝鍒欏皢紜竵閫鍥炪傛搷浣滃憳鍙互閲嶆柊澶?STRONG>璐?/STRONG>騫跺皢閽卞竵鍙栬蛋銆?/DIV>
 
 
鍦烘櫙#1
鍦扮偣錛氬悓嫻庡ぇ瀛﹁タ鍗楁ゼ
娑変紬錛氭垜錛岀┖鑷姩鍞揣鏈?/DIV>
 
瀵濆妤奸噷闈㈠垰鎼潵浜嗕竴鍙扮┖鐨勮嚜鍔ㄥ敭璐ф満錛岄偅鎴戜滑鏉ユ祴璇曚竴涓嬶細
 
public class TestEmptyAutomat extends TestCase
{
  public void testIsEmpty()
  {
    Automat automat = new Automat(); 
    assertTrue("it should be empty.", automat.isEmpty());
  }
}
 
Eclipse鎻愮ず"Automat cannot be resolved to a type"錛屽ソ錛岀湅鎴戠殑錛?/DIV>
public class Automat
{
  public Automat()  // constructor stub
  {
  }
}
 
鍐嶉湶涓鎵嬶細
//class Automat
public boolean isEmpty()
{
  return true;
}
 
鍏ㄩ儴淇濆瓨錛岃繍琛屾祴璇曪紝鍛靛懙錛岀豢鑹茶繘搴︽潯錛佹祴璇曟垚鍔燂紒
 
濂斤紝鏃㈢劧鎴戜滑榪樻病鏈夋姇榪囩‖甯侊紝閭d箞浣欓搴旇鏄?浜嗭綖
 
// class TestEmptyAutomat
public void testBalance()
{
  Automat automat = new Automat();
  assertEquals("the balance should be 0.", 0, automat.balance); 
}
 
緇х畫浣跨敤鎴戜滑鐨勬硶瀹濓細
// class Automat
public final int balance = 0;
 
榪愯嫻嬭瘯錛寉eah!
 
鐪嬩簡涓閬嶆祴璇曠▼搴忥紝鍐沖畾浼樺寲涓涓嬶細
public class TestEmptyAutomat extends TestCase
{
  protected void setUp() throws Exception
  {
    super.setUp();
    automat = new Automat();
  }
 
  public void testIsEmpty()
  {
    assertTrue("it should be empty.", automat.isEmpty());
  }
 
  public void testBalance()
  {
    assertEquals("the balance should be 0.", 0, automat.balance); 
  }
 
  private Automat automat;
}
鍐嶈繍琛屼竴嬈℃祴璇曪紝鍛靛懙錛屽張鏄豢鑹詫紒
 
鍦烘櫙#2
鍦扮偣錛氬悓嫻庡ぇ瀛﹁タ鍗楁ゼ
娑変紬錛氭垜錛岃嚜鍔ㄥ敭璐ф満(鏈変竴鐡剁櫨浜嬪彲涔?
 
濂芥秷鎭紝妤奸暱鍦ㄨ嚜鍔ㄥ敭璐ф満閲岄潰鏀句簡涓鐡禤epsi銆?/DIV>
 
public class TestAutomatWithOnePepsi extends TestCase
{
  protected void setUp() throws Exception
  {
    super.setUp();
    automat = new Automat();
    pepsi = new Pepsi();  // 涓鐡剁櫨浜嬪彲涔?/DIV>
    automat.add(pepsi);  // 妤奸暱闃垮Ж鏀劇殑锝?BR>  }
  
  public void testEmpty()
  {
    assertFalse("it should not be empty.", automat.isEmpty());
  }
 
  public Automat automat;
  public Pepsi pepsi;
}

鎺ョ潃鍒涘緩Pepsi綾?/DIV>
 
public class Pepsi
{
  public Pepsi() // constructor stub
  {
   
  }
}
 
鍐嶇粰Automat娣誨姞add鏂規硶錛?/DIV>
// class Automat
public void add(Pepsi pepsi)
{
 
}
 
濂斤紝鐜板湪鏈変袱涓猅C(Test Case)浜嗭紝涓轟簡榪愯涓や釜嫻嬭瘯妗堜緥錛屾垜浠潵鍒涘緩涓涓猅est Suite:
public class AutomatTests
{
  public static Test suite()
  {
    TestSuite suite = new TestSuite("Test for net.mybec.automat");
    //$JUnit-BEGIN$
    suite.addTestSuite(TestAutomatWithOnePepsi.class);
    suite.addTestSuite(TestEmptyAutomat.class);
    //$JUnit-END$
   
    return suite;
  }
}
 
緙栬瘧鎴愬姛錛岃繍琛孉utomatTests錛岀孩鑹茶繘搴︽潯銆俆estEmptyAutomat緇胯壊錛孴estAutomatWithOnePepsi綰㈣壊銆傚懙鍛碉紝鐪嬫潵瑕佽add鍋氱偣浜嬫儏浜嗐?/DIV>
 
// class Automat
public void add(Pepsi pepsi)
{
  goods.add(pepsi);
}
 
// 娣誨姞涓涓Pepsi鐨勬暟緇勫垪琛?/DIV>
private final ArrayList<Pepsi> goods = new ArrayList<Pepsi>();

 
// 淇敼isEmpty鏂規硶
public boolean isEmpty()
{
  return goods.isEmpty();
}

 
鍐嶆榪愯AutomatTests錛屽懙鍛碉紝緇胯壊錛佹垜浠枩嬈紒
 
濂斤紝鎴戜滑鍐嶇湅鐪婣utomat鐨勪綑棰濓細
 
// class TestAutomatWithOnePepsi
public void testBalance()
{
  assertEquals("the balance should be 0.", 0, automat.balance);
}
 
榪愯涓閬嶆祴璇曪紝Ok銆?/DIV>
 
 
鎴戜滑榪樻病鏈夋姇紜竵錛屽綋鐒朵笉鑳戒拱鐧句簨鍙箰浜嗭細
 
// class TestAutomatWithOnePepsi
public void testCanBuyWithoutBalance()
{
  assertFalse("we cannot buy pepsi without money.", automat.canBuy(pepsi));
}
// class Automat
public boolean canBuy(Pepsi pepsi)
{
  return false;
}
 
鎴戜滑澶枩嬈㈣繍琛屾祴璇曚簡錛屼簬鏄張蹇嶄笉浣忚繍琛屼簡鎵鏈夌殑鑷姩嫻嬭瘯錛堝懙鍛碉紝瀹為檯涓婃垜浠彧闇瑕佺偣鍑諱竴涓繍琛屾寜閽級銆傚張鏄豢鑹詫綖
 
濂斤紝濡傛灉Pepsi鐨勪環鏍兼槸2鍏冿紝鎴戜滑鎶?鍧楅挶璇曡瘯锝?/DIV>
 
// class Pepsi
public static final int PRICE = 2;
 
// class TestAutomatWithOnePepsi
public void testCanBuyWithOneYuan()
{
  automat.put(1);
  assertFalse("we cannot buy pepsi with one yuan.", automat.canBuy(pepsi));
}
 
// class Automat
public void put(int yuan)
{
 
}
 
榪愯嫻嬭瘯錛岀豢鑹層傛樉鐒?鍧楅挶涔頒笉鍒扮櫨浜嬪彲涔愩傞偅灝辨姇2鍧楅挶鍚э細
 
// class TestAutomatWithOnePepsi
public void testCanBuyWithTwoYuan()
{
  automat.put(2);
  assertTrue("we can not buy pepsi with two yuan.", automat.canBuy(pepsi));
}
 
榪愯嫻嬭瘯錛岀孩鑹茶繘搴︽潯錛?A >JUnit鎻愮ず鈥渨e can not buy pepsi with two yuan.鈥?澶╁晩錛岃繖涓嶅叕騫熾?/DIV>
鎯寵搗鏉ヤ簡錛孉utomat.put浠涔堜篃娌″仛銆備簬鏄垜浠坊浜嗗嚑絎旓細
 
// class Automat
public void put(int yuan)
{
  balance += yuan;
}
 
public boolean canBuy(Pepsi pepsi)
{
  return balance >= Pepsi.PRICE;
}
 
public int balance = 0;  // 鍘繪帀浜唂inal
 
榪笉鍙婂緟鍦扮偣鍑諱簡榪愯鎸夐挳錛寉eah錛佺粓浜庤兘涔板埌鍠滄鐨凱epsi浜嗭紙鍥犱負鐪嬪埌浜嗙豢鑹茶繘搴︽潯锝烇級銆?/DIV>
 
浜庢槸鎬ュ繖涔頒簡涓鐡禤epsi錛?/DIV>
// class TestAutomatWithOnePepsi
public void testBuyPepsiWithTwoYuan()
{
  automat.put(2);
  automat.buy(pepsi);
  assertTrue("the automat should be empty.", automat.isEmpty());
}
// class Automat
public void buy(Pepsi pepsi)
{
 
}
 
Run Tests, Failed. So,
// class Automat
public void buy(Pepsi pepsi)
{
  goods.remove(pepsi);
}
Run Tests again, OK.
 
 
// class TestAutomatWithOnePepsi
public void testBuyPepsiWithTwoYuan()
{
  automat.put(2);
  automat.buy(pepsi);
  assertTrue("the automat should be empty.", automat.isEmpty());
  assertEquals("the balance should be 0.", 0, automat.balance);
}
Run Tests, failed, so
 
// class Automat
public void buy(Pepsi pepsi)
{
  goods.remove(pepsi);
  balance -= Pepsi.PRICE;
}
Run Tests again, OK.
 
閭e鏋滄病鏈夋姇甯佸氨鐩存帴涔癙epsi鍛紵鍐嶆坊鍔犱竴涓祴璇曪細
 
// class TestAutomatWithOnePepsi
public void testBuyPepsiWithNoBalance()
{
  try
  {
    automat.buy(pepsi);
    fail("a NoBalanceException was expected when buying a pepsi with no balance.");
  }
  catch (NoBalanceException e)
  {
  }
}
 
 
// class NoBalanceException
public class NoBalanceException extends Exception
{
  public NoBalanceException(String arg0)
  {
    super(arg0);
  }
}
 
 
// class TestAutomatWithOnePepsi
public void testBuyPepsiWithTwoYuan()
{
  automat.put(2);
  try
  {
    automat.buy(pepsi);
  }
  catch (NoBalanceException e)
  {
    fail("a NoBalanceException was throwed.");
  } 
  assertTrue("the automat should be empty.", automat.isEmpty()); 
  assertEquals("the balance should be 0.", 0, automat.balance);
 }

 
// class Automat
public void buy(Pepsi pepsi) throws NoBalanceException
{
  if (balance == 0)
    throw new NoBalanceException("No balance");
  else if (balance >= Pepsi.PRICE)
  {
    goods.remove(pepsi);
    balance -= Pepsi.PRICE;
  }
}
 
榪愯嫻嬭瘯錛岀豢鑹詫紒
鎺ヤ笅鏉ユ姇1鍧楅挶涔頒拱鐪嬶細
 
// class TestAutomatWithOnePepsi
public void testBuyPepsiWithOneYuan()
{
  automat.put(1);
  try
  {
    automat.buy(pepsi);
    fail("a LackOfBalanceException was expected when buying a pepsi without enough balance.");
  }
  catch (LackOfBalanceException e)
  {
  }
  catch (NoBalanceException e)
  {
    fail("a NoBalanceException was not expected.");
  }
}
鎺ヤ笅鏉ワ紝涓轟簡鑳戒嬌緙栬瘧閫氳繃錛屽仛浜嗕竴涓嬩慨鏀癸細
// class LackOfBalanceException
public class LackOfBalanceException extends Exception
{
  public LackOfBalanceException(String arg0)
  {
    super(arg0);
  }
}
// class Automat
public void buy(Pepsi pepsi) throws NoBalanceException, LackOfBalanceException
{
  // ...
}
 
// class TestAutomatWithOnePepsi
public void testBuyPepsiWithNoBalance()
{
  // ...
  catch (LackOfBalanceException e)
  {
    fail("a LackOfBalanceException was not expected.");
  }

}
 
public void testBuyPepsiWithTwoYuan()
{
  // ...
  catch (LackOfBalanceException e)
  {
    fail("a LackOfBalanceException was not expected.");
  } 
  // ...
}

濂斤紝娌℃湁閿欒鎻愮ず浜嗐傜紪璇戯紝榪愯嫻嬭瘯錛岀孩鑹茶繘搴︽潯銆?/DIV>
testBuyPepsiWithOneYuan()鎻愮ず鈥渁 LackOfBalanceException was expected when buying a pepsi with no enough balance."
 
鎴戜滑淇敼涓涓婣utomat.buy()錛?/DIV>
// class Automat
public void buy(Pepsi pepsi) throws NoBalanceException, LackOfBalanceException
{
  if (balance == 0)
  {
    throw new NoBalanceException("No balance");
  }
  else if (balance >= Pepsi.PRICE)
  {
    goods.remove(pepsi);
    balance -= Pepsi.PRICE;
  }
  else
    throw new LackOfBalanceException("Lack of Balance");
}
嫻嬭瘯閫氳繃浜嗭紒灝忓皬搴嗙涓涓嬶綖
 
閭e鏋滄垜浠姇浜嗕笁鍧楅挶鍛紵濂斤紝璇曡瘯鐪嬶細
 
// class TestAutomatWithOnePepsi
public void testBuyPepsiWithThreeYuan()
{
  automat.put(3);
  assertTrue("we can buy pepsi.", automat.canBuy(pepsi));  
  try
  {
    automat.buy(pepsi);
    assertTrue("the automat should be empty.", automat.isEmpty());
    assertEquals("the balance should be 1.", 1, automat.balance);
  }
  catch (Exception e)
  {
    fail("Exception was not expected.");
  }  
}
 
緙栬瘧錛岃繍琛屾祴璇曪紝鎴愬姛錛乊eah!
 
To be continued...
 
 
涓嬩竴闆嗗皢浼氭洿鍔犵簿褰╋紝鏁鏈熷緟銆?/DIV>


]]> 主站蜘蛛池模板: 亚洲AV无码专区在线电影成人 | 国产精品高清免费网站| 无码日韩人妻av一区免费| 91亚洲自偷手机在线观看| 免费在线中文日本| 国产l精品国产亚洲区在线观看| 久久高潮一级毛片免费| 日韩亚洲变态另类中文| 国产在线观看xxxx免费| 亚洲丁香色婷婷综合欲色啪| 日韩精品在线免费观看| 久久久亚洲欧洲日产国码是AV| 少妇人妻偷人精品免费视频| 亚洲成人福利在线观看| 成人免费视频小说| 国产成人不卡亚洲精品91| 久久久久亚洲av成人无码电影| 中文字幕免费在线看线人动作大片 | 亚洲gv猛男gv无码男同短文| 久久久免费的精品| 亚洲人成电影网站| 国产午夜免费秋霞影院| 成人免费乱码大片A毛片| 亚洲美女视频网址| 啦啦啦中文在线观看电视剧免费版| 亚洲人成小说网站色| 亚洲国产成人精品久久久国产成人一区二区三区综 | 很黄很黄的网站免费的| 亚洲欧美日韩中文无线码| 免费又黄又爽又猛的毛片| 国产又黄又爽胸又大免费视频| 中文字幕亚洲综合久久2| 无码国产精品久久一区免费| 美女黄色毛片免费看| 亚洲国产综合专区在线电影| 国产福利在线观看免费第一福利| 边摸边脱吃奶边高潮视频免费 | 亚洲国产精品日韩在线| 免费国产在线观看不卡| 精品一卡2卡三卡4卡免费视频| 亚洲av成人一区二区三区|