2010-11-17 3 views
0

Все,Передача аргументов командной строки JUnit в Eclipse

В настоящее время я использую JUnit 4 для написания тестовых примеров. Я довольно новичок в JUnit и затрудняюсь проверить мой основной класс, который принимает аргументы. Я уточнял аргументы моей JUnit тестовый класс по:

1>
2> Goto Run As правой кнопкой мыши JUnit тестовый класс -> Run Configurations
3> Выберите вкладку Аргументы и укажите значение (я вошел недопустимый аргумент т.е. основного класса ожидает, что аргумент командной строки, которые будут преобразован в int и я передаю строковое значение, которое не может быть преобразовано в int)

Однако, main класса, который я тестирую, если командная строка аргумент не может быть преобразован в int, чем я бросаю IllegalArgumentException. Однако JUnit не показывает метод testMain() как Error или Failure. Я не думаю, что моя настройка подходит для класса 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(); 
} 

Переместить код, который находился в основной() в новый метод Go(). Теперь, ваш метод тестирования может сделать это:

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

Во-первых, аргументы должны быть в разделе аргументов программы. Обычно точка запуска приложения, которая является основным методом, не нуждается в тестировании, если вы разрабатываете приложение для проверки.

  1. Refactor класс

    
    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. Теперь вы можете легко проверить метод nullOrEmpty с использованием JUnit, как


@Test(expected = IllegalArgumentException.class) 

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

Я думаю, что это лучший подход