2011-11-16 66 views
0

當談到測試你的代碼時,使用它自己的main來測試它是個好主意嗎? 另一種選擇是在測試中使用外部文件。在自己的主體中測試類是否是一個好主意?

一個例子:

Class Foo{ 
    Foo(){/*...*/} 
    public boolean met1(){/*...*/} 
    //other metodes... 

    //Tests 
    public static void main(String args[]){ 
     Foo f = new Foo(); 
     //Test the correctness of data... 

     boolean r = f.met1(); 
     //check the result... 
    } 
} 

什麼是這個美特殊的優點和缺點。 也許有更好的方法來測試我沒有提到的代碼。

+0

不知道這是不錯的做法,但它非常方便! –

回答

3

如果它是一個可以真正自動化一個測試,你應該使用一個外部文件,爲的JUnit等很多支持運行所有測試,持續集成,與漂亮的綠線和紅線彙報, etc ...

如果它是一個GUI元素,你希望能夠調出並看到它的樣子,也許手動點擊地方看看會發生什麼,沒關係使用main()。評論如此。同樣,如果程序員可能想要測試和觀察調試器中發生的事情,那麼改變命令行參數等等,它就是這樣。使用main()。評論如此。

+0

我同意,這主要是誰在運行代碼的問題。如果可行,您希望它們由持續集成服務器自動運行。諸如JUnit這樣的測試框架是在這些情況下要走的路。另一件考慮恕我直言的事情是確保你不用測試代碼混淆你的生產代碼。 – Puce

0

這並不重要,但在同一個類中使用main方法有一個好處,那就是您可以在main方法內使用該類的私有靜態類字段。

例如:

public class Foo 
{ 

    private static String someText = "blah blah"; 

    public Foo(){/*...*/} 

    public static void main(String args[]) 
    { 
     System.out.println(someText); 
    } 
} 
1

,如果你想,當它完成,檢查結果只來運行你的代碼是確定。 但我更喜歡特殊的Main類,並從它中調用這些方法(只是在許多類中都沒有垃圾代碼)。 但是無論如何JUnit測試要好得多。

0

我認爲除了讓自己的課程比他們需要的更大以外,沒有其他的缺點。但是,我認爲應該把寫作形式化測試作爲一個框架的一部分,這可以幫助你避免錯誤,這是浪費精力。

相關問題