2010-12-01 42 views
0

我從來沒有寫過一個單元測試。但是自從我讀過的每篇文章,他們都在談論單元測試。我想我應該開始使用它。如何在不使用庫的情況下進行單元測試?

但是如何?

有人能指點我一個非常簡單的單元測試你好世界的例子嗎?沒有使用jUnit或類似的東西。

回答

3

如果你不想使用任何其他庫,那麼你必須自己做很多工作。例如,假設你有要測試一個函數的類:

class Foo { 
    public int bar(int input); 
} 

現在,您可以編寫一個測試類:

class TestFoo { 
    public void testBarPositive() { 
     Foo foo = new Foo(); 
     System.out.println(foo.bar(5) == 7); 
    } 

    public void testBarNegative() { 
     Foo foo = new Foo(); 
     System.out.println(foo.bar(-5) == -7); 
    } 

    public static void main(String[] args) { 
     TestFoo t = new TestFoo(); 
     t.testBarPositive(); 
     t.testBarNegative(); 
    } 
} 

這是一個很簡單的例子,但它表明你如何你可以編寫你自己的單元測試。

這就是說,我強烈推薦使用類似JUnit的庫。它爲您提供了很多免費的功能,並刪除了大量您必須自己編寫的代碼。它還可以生成很好的報告,並且(與Cobertura相結合時)可以爲您提供一個相當全面的測試結果。

0

我會推薦你​​使用其他一些庫。這聽起來像你想要做的是建立你自己的單元測試庫。問題在於代碼的任何基本問題,您可能會犯的任何邏輯錯誤,您也可能在您的單元測試代碼中進行測試,因此,您的單元通過測試,但僅僅是因爲它們做你期望他們做的事情,而不是因爲他們實際上應該用你使用的任何語言的嚴格標準來做。假設你編寫了一個函數來比較true/false,並且在PHP(0 == false)= true中返回0,但是(0 === false)= false如果你爲場景1編碼但忽略場景2,然後編寫一個單元測試,測試場景1是否有效,但忽略場景2(如果你總是用這種方式進行編碼,那麼你可能會這麼做),那麼你的單元測試會根據你所定義的但仍然錯誤的方式通過。

相關問題