當我們建立了一個類時,我們可以為它建立一個單元測試。為建立一個有意義的測試實例,通常開始詢問您要使用何種類型的類,然后編寫代碼,進行單元測試——回歸的獨立測試。
實際上有許多種方法使用新的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() { |
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) } |
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的能力。
3 使用斷言(Assert)
開發人員熟悉其他編程環境通常的斷言概念。例如,在C和C++中,assert()宏是常常用來測試一個正確的結論到一個潛在問題的操作。在JUnit中,您可以直接從測試實例中調用任何Assert方法,因為TestCase 是Assert的子類。
不像C和C++語言中assertion 宏的發現,Assert類–被定義和應用為junit.framework.Assert,具有的功能如下所示。
Assert.assertEquals
Assert.assertNotNull
Assert.assertNull
Assert.assertSame
Assert.assertTrue
Assert.fail