當我們建立了一個類時,我們可以為它建立一個單元測試。為建立一個有意義的測試實例,通常開始詢問您要使用何種類型的類,然后編寫代碼,進行單元測試——回歸的獨立測試。
實際上有許多種方法使用新的money類,這里我們將執行兩個測試實例。我們討論的兩個測試(testAddMoney101()和testEquals())將足以演示如何建立單元測試。
1 JUnit
單元測試并不是新的概念。而新的是Borland JBuilder支持面向對象、開放源代碼的測試框架。測試框架的Java 版本是眾所周知的JUnit。
JUnit是編寫重復測試的簡單框架。它是單元測試框架中的一個xUnit框架的實例。您可以從
http://junit.sourceforge.net
http://www.junit.org
中了解更多關于該框架的信息。
在我們建立第一個測試實例前,我們需要了解所有測試實例都來自于TestCase類。為寫出正確的測試實例,您的類將需要以下代碼。
import junit.framework.* public class TestMoney101 extends TestCase { public TestMoney101(String s) { protected void setUp() { |
建立TestMoney101的構造函數(constructor)接受建立的參數,并把它傳到父類。setUp()和tearDown()成員函數的支持提供給您建立和取消所需建立一個成功的測試和報告的任何準備活動。我們將稍后展示如何使用這些成員函數建立一個可重用的測試框架。
2 增加特殊測試
一旦我們提供了一個基本的TestCase 簽名,我們就能建立我們的第一個測試實例。請增加以下代碼到TestMoney101。
public void testAddMoney101() { Money101 m12EUR = new Money101(12, "EUR"); // (1) Money101 m14EUR = new Money101(14, "EUR"); // (1) Money101 expected = new Money101(26, "EUR"); Money101 result = m12EUR.addMoney101(m14EUR); // (2) Assert.assertTrue(expected.equals(result)); // (3) } |
測試方法testAddMoney101() 將:
(1)建立被測試對象;
(2)調用一個測試的成員函數(addMoney101());
(3)調用另一個成員函數(equals()),并校驗結果(Assert.assertTrue())。
所有用戶指定的成員函數執行惟一的測試,且操作必須是public類型。
我們將在測試類中加入等式測試,相應的代碼如下:
public void testEquals() { Money101 m12EUR = new Money101(12, "EUR"); Money101 m14EUR = new Money101(14, "EUR"); Assert.assertTrue(!m12EUR.equals(null)); Assert.assertTrue(m12EUR.equals(m12EUR)); Assert.assertTrue(m12EUR.equals(new Money101(12, "EUR"))); Assert.assertTrue(!m12EUR.equals(m14EUR)); } |
我們再次依賴Assert 類來報告相關錯誤條件?,F在我們有時間來檢查Assert的能力。