閱讀899 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《數據結構與抽象:Java語言描述(原書第4版)》一2.1.5 測試核心方法

本節書摘來華章計算機《數據結構與抽象:Java語言描述(原書第4版)》一書中的第2章 ,第2.1.5節,[美]弗蘭克M.卡拉諾(Frank M. Carrano) 蒂莫西M.亨利(Timothy M. Henry) 著 羅得島大學  新英格蘭理工學院 辛運幃 饒一梅 譯 更多章節內容可以訪問雲棲社區“華章計算機”公眾號查看。

2.1.5 測試核心方法

準備。既然我們已經定義了3個核心方法,就可以測試它們。但是BagInterface中的其他方法怎麼辦呢?因為ArrayBag(程序清單2-1中給出的)實現了BagInterface,所以Java語法檢查程序將查看這個接口中聲明的每個方法的定義。我們是否應該等到完成它們的定義後才開始測試?絕對不要!在你寫方法時就進行測試會讓你盡早發現邏輯錯誤。不過,不是寫BagInterface中每個方法的完整實現,而是對可暫時忽略的方法給出它們的不完整定義。
一個不完整定義的方法稱為**存根**(stub)。存根僅需要讓語法檢查器通過即可。例如,對於每個返回一個值的方法,通過添加一個return語句讓其返回一個啞值來避免語法錯誤。返回布爾值的方法可以返回假。返回對象的方法返回null。而void方法可以簡單地隻有一個空方法體。
例如,方法remove最終將返回被刪除的項,所以它的存根必須含有一個return語句,如下所示。
image

void方法clear的存根應該是
image

注意,如果你想在測試程序中調用存根,則存根應該顯示一條信息來報告它被調用過。

程序設計技巧:不要等到完全實現ADT後才測試它。寫存根,這是所需方法的不完整定義,可以盡早開始測試。
測試程序。程序清單2-2中的程序專門用來測試開發階段的類ArrayBag的核心方法add和toArray。初始時,main方法使用默認構造方法創建一個空包。因為這個包的容量是25,所以如果你添加少於25個項,數組不應該滿。因此,每次添加後,add方法都應該返回真。實際上,程序的描述性輸出指明被測試的方法是正確的。

隨後在main方法中,我們考慮容量為7的包,然後給它添加7個字符串。此時,如果試圖進行第8次添加,add方法應該返回假。同樣,程序的描述性輸出表明方法是正確的。
程序清單2-2 測試ArrayBag類的核心方法的程序
image
image
image

程序設計技巧:方法的全麵測試還應該包括實參取其對應參數合理範圍內外值的情況。

注意,除了main方法外,ArrayBagDemo1還有其他兩個方法。因為main是靜態的,且調用這兩個方法,所以它們也必須是靜態的。方法testAdd的參數接收一個包和一個字符串數組。該方法使用循環將數組中的每個字符串添加到包中。它還測試了add方法的返回值。最後,方法displayBag的參數是一個包,並使用包的方法toArray來訪問它的內容。一旦我們有一個包項的數組,就可以用循環來顯示它們。

自測題8 在ArrayBagDemo1的main方法中執行下列語句的結果是什麼?

最後更新:2017-06-26 17:02:26

  上一篇:go  PgSQL · 最佳實踐 · 從 ODPS 遷移數據到 HybridDB
  下一篇:go  《數據結構與抽象:Java語言描述(原書第4版)》一2.1.4 讓實現安全