Netbeans 6.5 的 Unit testing 初次接觸

喔,真棒!最近這一陣子在安裝一套用 USB 開機的 64 位元版本的 Ubuntu。在考慮要裝什麼開發工具,先想到裝一套給 C++ 用,所以選了 wxWidgets 推薦的 Code::Blocks。裝了以後,發覺它並不是最好用的 C++ 工具,除了可以很容易的用 wxSmith 把 wxWidgets 圖形界面建立起來以外,其它現代開發工具應該要有的工具,它都沒有。所以又落到 Eclipse 和 Netbeans 兩套工具的二選一抉擇。最後我選了 Netbeans。原因是:它的 6.5 版整體建構看起來比較一致,雖然看起來因為加入太多工具而相形之下很巨大,但是,在初期佈署時,我可以省下不少心力,把時間放在比較需要的部份。唉,七年前我在做同樣考量時,因為完全相反的理由選擇了 Eclipse,結果是陷入不斷新增套件的夢魘中。就在下載的時候,居然發現正體中文版本是 available,那當然是下載中文版來試用啦。

結果裝起來時嚇了一大跳。為什麼?我建立一個新的 Java 專案給大家看看:

我之前沒注意是否 6.0 版就是這樣,但是這個 6.5 版嚇了我一大跳,居然在建立好一個專案時,自動預留單元測試的測試套件。

好,那麼我就試著用一下 Manning 出版的那本著名的 JUnit 好書:JUnit in Action, Second Edition 的第一章的範例。......什麼?這本書第二版還沒出來?嘿嘿嘿,真不好意思,我習慣參加 MEAP,但是,這本書的第一章可以免費下載,所以你還是可以先行下載下來看看。

第一章的範例很簡單,作者建了一個極簡單的 Class,Calculator,看就知道是計算機的小程式,但是作者把它更簡化了,只有一個 method add。顧名思義,就是把兩個數字加起來。所以,我就在我的專案中依樣畫葫蘆:

好像不難吧。這裏我發現一個 Netbeans 比 Eclipse 不方便的地方,它不能直接在左上方的「專案」子視窗中,直接用點選滑鼠右鍵叫出下拉式選單的方式建立一個新的 method,但是,這件事其實用手打花不了多少時間。結果如上。

再來才是關鍵。我現在 API 中只有一個 method,所以只需對它做單元測試。我打算不要用 JUnit in Action 書中那個爛名稱,打算把 test method 改成 Netbeans 建議的預設值。但是,如何建立一個測試方法呢?很簡單,只需要在左上方專案子視窗的 Calculator.java 上按下滑鼠右鍵,叫出下拉式選單,選擇「工具」/「建立 JUnit 測試」:

接著就出現一個對話方塊,問你打算採用哪一版本的 JUnit:

接著出現「建立測試」的對話方塊,如下圖。我選擇它的預設值:

按下確定後,Netbeans 就會在專案中的「測試套件」裏加上一個名為 CalculatorTest 的測試 Class,在這個 class 中,預設建立了一堆 method,有 setUp()、tearDown(),當然還有兩個自動從主要類別 Calculator 中抽取出來的方法:testAdd() 和 testMain():

其實這裏面我們只需要 testAdd(),其它都可以刪掉。刪掉有簡單的方法,可以在左下方的「成員檢視」子視窗中,選擇沒用,想要砍掉的 method,然後叫出下拉式選單,選擇「重構」/「安全刪除」:

接著出現一個對話方塊來讓你確認,按下「重構」後,程式碼就乾淨很多,沒必要的東東都砍了:

接著我們來看看 Netbeans 幫我們建立的程式碼:

我們稍微瀏覽一下程式碼。發現 Netbeans 自動幫我們加上三個變數,以及一個 assertEquals 方法。但是,也弄了一個垃圾,fail,要我們清。那麼,按照書中的範例,我先把 number1 設成 10,number2 設成 50,再把 expResult (應該是 expected result 的意思) 設成 60,接著把最後一行的 fail 註解掉,接著按下 Alt-F6,執行測試:

哇哩咧,失敗!為什麼?很簡單,浮點誤差!所以不能用兩個參數版本的 assertEquals,而要再加上第三個參數:delta,把它設成零:

再按一次 Alt-F6,再執行測試。哈哈哈,這次通過了:

所以,Netbeans 6.5 版,不但把 JUnit 測試架構完全整合到 IDE 中,也加入更多軟體工程的工具。因為這兩天我才開始好好在使用它,有機會我會再把其它,我有在用,而且是之前 Eclipse 有,Netbeans 早期版本沒有的軟體工程的功能慢慢介紹。

回應

Netbeans的是指一個平台框架,同時為

Netbeans的是指一個平台框架,同時為 Java桌面應用程序和一個集成開發環境開發與 Java,JavaScript的,PHP中,從 Python,Ruby,Groovy中,C語言,C + +,斯卡拉和Clojure。 NetBeans IDE是用Java編寫的,運行在JVM中到處安裝,包括Windows,Mac操作系統,Linux和Solaris。阿需要JDK的Java開發功能,但並不需要發展其他編程語言。 NetBeans平台允許應用程序制定的一套所謂的模塊化軟件組件模塊。應用基於 NetBeans平台,包括NetBeans IDE可以延長第三方開發商。
我是一個學生的ccie lab我這麼多專業的網絡解決方案的。