2011-10-10 82 views
-1

我剛開始學習JUnit。我的代碼如下:Junit - 命令行參數

public class MyClass { 
    private void verify(args) {...} 
    private void process(clientoptions) {...} 

    public static void main(String[] args) { 
    verify(args); 
    //get client and do something 
    ..... 
    // some more code here.... 
    ........ 
    // and then 
    process(clientoptions); 
    } 
} 

你如何在JUnit寫一個測試,然後在不同的命令行參數發送。

謝謝

回答

3

簡單!

public class MyClassTest { 

    @Test 
    public void shouldVerifyParameters() { 
     MyClass.main(new String[]{"param1", "param2"}); 
    } 

} 

但是便於測試考慮重構MyClassMyClassMainMyClass其中前者只解析和驗證命令行參數並調用clientoptions後一類。

這樣,您不違反Single responsibility principle,您可以使用main之外的業務邏輯,例如在servlet或移動設備上。另外...測試更簡單。

+0

如果進程(clientoptions)返回一個布爾值來表示錯誤狀態,那麼我怎樣才能使用assertTrue方法來檢查結果。主要方法返回void。謝謝。 –

+0

首先,如果你去重構,我建議你可以直接測試'process()'。其次,返回'false'來表示錯誤是一個糟糕的設計,而是使用異常。 –