Передача аргументов командной строки в JUnit в Eclipse - PullRequest
0 голосов
/ 17 ноября 2010

Все,

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

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

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

Ответы [ 3 ]

2 голосов
/ 17 ноября 2010

Для проверки основного метода класса просто напишите что-то вроде:

@Test(expected = IllegalArgumentException.class)
public void testMainWithBadCommandLine()
{
     YourClass.main(new String[] { "NaN" });
}
1 голос
/ 17 ноября 2010

Измените метод main () на что-то вроде этого:

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

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

public void myClassTest()
{
  String[] args = new String[]{"one", "two"}; //for example
  MyClass classUnderTest = new MyClass(testArgs);
  classUnderTest.go();
}
0 голосов
/ 28 марта 2012

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

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


@Test(expected = IllegalArgumentException.class)

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

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

...