本節書摘來華章計算機《資料結構與抽象:java語言描述(原書第4版)》一書中的第2章 ,第2.1.5節,[美]弗蘭克m.卡拉諾(frank m. carrano) 蒂莫西m.亨利(timothy m. henry) 著 羅得島大學 新英格蘭理工學院 辛運帏 饒一梅 譯 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。
準備。既然我們已經定義了3個核心方法,就可以測試它們。但是baginterface中的其他方法怎麼辦呢?因為arraybag(程式清單2-1中給出的)實作了baginterface,是以java文法檢查程式将檢視這個接口中聲明的每個方法的定義。我們是否應該等到完成它們的定義後才開始測試?絕對不要!在你寫方法時就進行測試會讓你盡早發現邏輯錯誤。不過,不是寫baginterface中每個方法的完整實作,而是對可暫時忽略的方法給出它們的不完整定義。
一個不完整定義的方法稱為存根(stub)。存根僅需要讓文法檢查器通過即可。例如,對于每個傳回一個值的方法,通過添加一個return語句讓其傳回一個啞值來避免文法錯誤。傳回布爾值的方法可以傳回假。傳回對象的方法傳回null。而void方法可以簡單地隻有一個空方法體。
例如,方法remove最終将傳回被删除的項,是以它的存根必須含有一個return語句,如下所示。

void方法clear的存根應該是
注意,如果你想在測試程式中調用存根,則存根應該顯示一條資訊來報告它被調用過。
程式設計技巧:不要等到完全實作adt後才測試它。寫存根,這是所需方法的不完整定義,可以盡早開始測試。 測試程式。程式清單2-2中的程式專門用來測試開發階段的類arraybag的核心方法add和toarray。初始時,main方法使用預設構造方法建立一個空包。因為這個包的容量是25,是以如果你添加少于25個項,數組不應該滿。是以,每次添加後,add方法都應該傳回真。實際上,程式的描述性輸出指明被測試的方法是正确的。
随後在main方法中,我們考慮容量為7的包,然後給它添加7個字元串。此時,如果試圖進行第8次添加,add方法應該傳回假。同樣,程式的描述性輸出表明方法是正确的。
程式清單2-2 測試arraybag類的核心方法的程式
程式設計技巧:方法的全面測試還應該包括實參取其對應參數合理範圍内外值的情況。
注意,除了main方法外,arraybagdemo1還有其他兩個方法。因為main是靜态的,且調用這兩個方法,是以它們也必須是靜态的。方法testadd的參數接收一個包和一個字元串數組。該方法使用循環将數組中的每個字元串添加到包中。它還測試了add方法的傳回值。最後,方法displaybag的參數是一個包,并使用包的方法toarray來通路它的内容。一旦我們有一個包項的數組,就可以用循環來顯示它們。
自測題8 在arraybagdemo1的main方法中執行下列語句的結果是什麼?