
現在我們得到了一條 JUnit 的最佳實踐:單元測試代碼和被測試代碼使用一樣的包,不同的目錄。
一切準備就緒,一起開始體驗如何使用 JUnit 進行單元測試吧。下面的例子來自筆者的開發實踐:工具類 WordDealUtil 中的靜態方法 wordFormat4DB 是專用于處理 Java 對象名稱向數據庫表名轉換的方法(您可以在代碼注釋中可以得到更多詳細的內容)。下面是第一次編碼完成后大致情形:
package com.ai92.cooljunit;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 對名稱、地址等字符串格式的內容進行格式檢查 * 或者格式化的工具類 * * @author Ai92 */public class WordDealUtil { /** * 將Java對象名稱(每個單詞的頭字母大寫)按照 * 數據庫命名的習慣進行格式化 * 格式化后的數據為小寫字母,并且使用下劃線分割命名單詞 * * 例如:employeeInfo 經過格式化之后變為 employee_info * * @param name Java對象名稱 */ public static String wordFormat4DB(String name){ Pattern p = Pattern.compile("[A-Z]"); Matcher m = p.matcher(name); StringBuffer sb = new StringBuffer(); while(m.find()){ m.appendReplacement(sb, "_"+m.group()); } return m.appendTail(sb).toString().toLowerCase(); }} |
它是否能按照預期的效果執行呢?嘗試為它編寫 JUnit 單元測試代碼如下:
package com.ai92.cooljunit;import static org.junit.Assert.assertEquals;import org.junit.Test;public class TestWordDealUtil { //測試wordFormat4DB正常運行的情況 @Test public void wordFormat4DBNormal(){ String target = "employeeInfo"; String result = WordDealUtil.wordFormat4DB(target); assertEquals("employee_info", result); }} |
很普通的一個類嘛!測試類 TestWordDealUtil 之所以使用“Test”開頭,完全是為了更好的區分測試類與被測試類。測試方法 wordFormat4DBNormal 調用執行被測試方法 WordDealUtil.wordFormat4DB,以判斷運行結果是否達到設計預期的效果。需要注意的是,測試方法 wordFormat4DBNormal 需要按照一定的規范書寫:
測試方法必須使用注解 org.junit.Test 修飾。
測試方法必須使用 public void 修飾,而且不能帶有任何參數。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/