<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    真善美

    勇于承擔(dān)責(zé)任; 如果你做不到,要提前跟別人說明,不要等到事情發(fā)生后再解釋。

      BlogJava :: 首頁 ::  :: 聯(lián)系 :: 聚合  :: 管理 ::
      55 隨筆 :: 0 文章 :: 29 評論 :: 0 Trackbacks

    JUnit提供了一些輔助函數(shù),用于幫助你確定某個被測試函數(shù)是否工作正常。通常而言,我們把所有這些函數(shù)統(tǒng)稱為斷言。它讓你可以確定:某條件是否為真;兩個數(shù)據(jù)是否相等,或不等,或者其他的一些情況。下面逐個介紹JUnit提供的每一個斷言(assert)方法。

    assertEquals(String message, double expected, double actual, double delta)
    這是使用得最多的斷言形式。上面的參數(shù)中,expected是你的期望值,actual是被測試代碼實際產(chǎn)生的值,message是一個可選的消息,如果提供的話,將會在發(fā)生錯誤的時候報告這個消息。delta表示精確度。
    assertEquals("Should be 3 1/3",3.33,10.0/3.0,0.01)

    assertNull
    assertNull(String message, Object object)
    assertNotNull(String message, Object object)
    驗證一個給定的對象是否為null(或者為非null),如果答案為否,則將會失敗。message參數(shù)是可選的。

    assertTrue
    assertTrue(String message, boolean condition)
    驗證給定的二無條件是否為真,如果為假的話,將會失敗。message參數(shù)是可選的。
    這種寫法被用于確認某個分支,或者異常邏輯才有可能是正確的選擇。
    assertFalse(String message, boolean condition)
    驗證給定的二無條件是否為假,如果為真的話,將會失敗。message參數(shù)是可選的。

    assertSame
    assertSame(String message, Object expected, Object actual)
    驗證expected參數(shù)和actual參數(shù)所引用的是否為同一個對象,如果不同的話,將會失敗。message參數(shù)是可選的。
    assertNotSame(String message, Object expected, Object actual)
    驗證expected參數(shù)和actual參數(shù)所引用的是否為同一個對象,如果相同的話,將會失敗。message參數(shù)是可選的。

    fail
    fail(String message)
    上面的斷言將會使測試立即失敗,其中message參數(shù)是可選的。這種斷言通常被用于標(biāo)記某個不應(yīng)該被到達的分支(例如,在一個預(yù)期發(fā)生的異常之后)。
    JUnit測試骨架:
    用JUnit寫測試真正所需要的就三件事:
    1、一個import語句引入所有JUnit.framework.*下的類。
    2、一個extends語句讓你的類從TestCase繼承。
    3、一個調(diào)用Super(string)的構(gòu)造函數(shù)。
    許多IDE至少會提供這些給你,這樣寫出來的類能夠使用JUnit的test runner運行,并且自動執(zhí)行類中所有的...test方法。


    import junit.framework.TestCase;

    public class AddtionTest extends TestCase {

     public AddtionTest(String name) {
      super(name);
     }

     public void testAdd() {
      this.assertEquals(2, 1 + 1);
     }
    }
    定義一個類,每個包含測試的類都必須如所示那樣由TestCase繼承而來。基類TestCase提供了我們所需的大部分單元測試功能,包括所有在前面講述過的斷言方法。
    基類需要一個以String為參數(shù)的構(gòu)造函數(shù),因而我們必須調(diào)用super以傳遞這么一個名字。我們不知道這個名字此時是什么,因而我們就僅僅讓我們自己的構(gòu)造函數(shù)接受String參數(shù)并把這個參數(shù)在第五行傳遞上去。
    最后,測試類包含了名為XXtest的方法。

    JUnit測試組成
    一個測試類包含一些測試方法;每個方法包含一個或者多個斷言語句。但是測試類也能調(diào)用其他測試類:單獨的類,包,甚至完整的一個系統(tǒng)。這可能通過創(chuàng)建test suite來取得。任何測試類都能包含一個名為suite的靜態(tài)方法:
    public static Test suite();
    你可以提供suite()方法來返回任何你想要的測試集合(沒有suite()方法,JUnit會自動運行所有的...test方法)。但是你可能需要手工添加特殊的測試,包括其他suite。

    假設(shè)有如下的測試類:

    所以我們必須顯示的說明要運行哪個方法。當(dāng)我們調(diào)用test suite的時候,只有那些運行不花多少時間的測試會補運行。而且,此時我們看到了給構(gòu)造函數(shù)的string參數(shù)是做什么用的了:它讓TestCase返回了一個對命名測試方法的引用。這兒,我們使用它來得到那兩個耗時少的方法的引用,它把它們包含到test suite之中。

    然后我們再用一個高一級別的測試來組合這兩個測試類:
    運行TestClassComposite,以下單個的測試方法都將被運行:
    TestClassOne的testAddition()
    TestClassOne的testSubtraction()
    TestClassTwo的testShortTest()
    TestClassTwo的testAnotherShortTest()

    每個測試的運行都應(yīng)該是相互獨立的;從而你就可以在任何時候,以任意的順序運行每個單獨的測試。

    在調(diào)用每個xxtest方法之前,調(diào)用方法setup();并且在每個測試方法完成之后,調(diào)用方法tearDown()。假設(shè)對于每個測試,你都需要某種數(shù)據(jù)庫連接。這時,你就需要在每個測試方法中重復(fù)建立連接和釋放連接了,而只須在setup和teardown方法中分別建立和釋放連接:public class TestDB extends TestCase {

     public TestDB(String name) {
      super(name);
     }

     protected void setUp() throws Exception {
      dbconn = new Connection("Oracle", "1521", "fred", "foobar");
      dbconn.connect();
     }

     protected void tearDown() throws Exception {
      dbconn.disConnect();
      dbconn = null;
     }

     public void testAccount() {
      // use dbconn
     }

     public void testEmployee() {
      // use dbconn
     }
    }
    在上例中,在調(diào)用tessAccount()之前,將會先調(diào)用setup();然后在tessAccount()之后,會接著調(diào)用tearDown()。在第二個測試函數(shù)testEmployee()中,也是按順序先調(diào)用setup(),再調(diào)用該函數(shù),最后調(diào)用tearDown()。
    protected void setUp()
    protected void tearDown()

    posted on 2008-03-19 13:06 真善美 閱讀(1013) 評論(0)  編輯  收藏 所屬分類: Java學(xué)習(xí)
    主站蜘蛛池模板: 国产亚洲精品无码专区| 免费v片在线观看品善网| 亚洲A∨无码无在线观看| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 五月天网站亚洲小说| 曰批全过程免费视频在线观看无码| 少妇亚洲免费精品| 9i9精品国产免费久久| 亚洲情综合五月天| 无码人妻精品中文字幕免费| 日韩亚洲AV无码一区二区不卡| **aaaaa毛片免费同男同女| 久久精品国产亚洲77777| www.免费在线观看| 亚洲人6666成人观看| 成人免费无遮挡无码黄漫视频| 亚洲日韩久久综合中文字幕| 四虎永久成人免费| 十八禁在线观看视频播放免费| 337p日本欧洲亚洲大胆色噜噜| 在线v片免费观看视频| 直接进入免费看黄的网站| 亚洲自偷自偷偷色无码中文| 午夜视频在线免费观看| 亚洲AV无码成人专区| 伊在人亚洲香蕉精品区麻豆| 三级毛片在线免费观看| 亚洲色欲或者高潮影院| 日韩中文无码有码免费视频| 国产免费一区二区三区免费视频| 亚洲av色福利天堂| 在线观看免费污视频| 久久精品成人免费观看97| 亚洲免费观看网站| 亚洲成aⅴ人片久青草影院| 久久久高清日本道免费观看| 亚洲人成人网毛片在线播放| 亚洲毛片网址在线观看中文字幕| 久久久久久AV无码免费网站下载| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲春色另类小说|