2010-11-17 98 views
0

全部,將命令行參數傳遞給Eclipse中的JUnit

我目前使用JUnit 4編寫測試用例。我對JUnit相當陌生,發現很難測試帶有參數的主類。 >運行配置
3>選擇Arguments選項卡,並指定一個值(我已經進入 -

1>右鍵單擊JUnit測試類
2>轉到運行方式:我已經通過指定的參數,以我的JUnit測試類無效參數即主類期望的命令行參數被轉換爲int和我傳遞),可以不被轉換爲int字符串值

然而,main類我測試,如果在命令行參數不能轉換爲int,比我丟IllegalArgumentException。但是,JUnit不會將testMain()方法顯示爲ErrorFailure。我不認爲我的設置適合​​JUnit課程。任何人都可以請指導我在哪裏,我錯了

回答

2

要測試類主要方法簡單地寫類似:

@Test(expected = IllegalArgumentException.class) 
public void testMainWithBadCommandLine() 
{ 
    YourClass.main(new String[] { "NaN" }); 
} 
1

更改main()方法,以這樣的:

public static void main(String[] args) 
{ 
    MyClass myclass = new MyClass(args); 
    myclass.go(); 
} 

此舉是在主代碼(),以新的方法去()。現在,您的測試方法可以做到這一點:

public void myClassTest() 
{ 
    String[] args = new String[]{"one", "two"}; //for example 
    MyClass classUnderTest = new MyClass(testArgs); 
    classUnderTest.go(); 
} 
0

首先參數應該在程序參數部分。通常情況下,如果您將應用程序設計爲可測試的,則不需要對主要方法的應用程序啓動點進行測試。

  1. 重構類

    
    public static class ArgumentValidator 
        { 
         public static boolean nullOrEmpty(String [] args) 
         { 
          if(args == null || args.length == 0) 
          { 
           throw new IllegalArgumentException(msg); 
          } 
          //other methods like numeric validations 
         } 
        } 
    
  2. 現在您可以輕鬆地測試使用JUnit的nullOrEmpty方法類似


@Test(expected = IllegalArgumentException.class) 

    public void testBadArgs() 
    { 
     ArgumentValidator.nullOrEmpty(null); 
    } 

我認爲這是一個更好的辦法