JUnit не передает аргументов основному методу Java - PullRequest
1 голос
/ 12 марта 2019

Я пытаюсь проверить мой основной метод (который должен принимать ровно один аргумент), если аргументы не переданы. Кажется, я не понимаю, чего мне здесь не хватает для достижения этой цели. Природа моей программы такова, что она читает входные данные из файла, создает объекты, передавая параметры, прочитанные из файла, и отображает выходные данные.

Сообщение об ошибке:

org.junit.ComparisonFailure: Ожидаемый: Пожалуйста, передайте один аргумент

Фактически:

Вот мой юнит-тест:

    @Test
    public void givenNoParameter_shouldAskForOne() throws IOException {
    String[] args = {};
    String output;

    try (ByteArrayOutputStream bOutput = new ByteArrayOutputStream()) {
        System.setOut(new PrintStream(bOutput));
        Main.main(args);
        bOutput.flush();
        output = bOutput.toString();
    }
    String newLine = System.getProperty("line.separator");
    String[] breakDownOutput = output.split(newLine);

    assertEquals(1, breakDownOutput.length);
    assertEquals("Please pass one argument", breakDownOutput[0]);
}

Основной метод:

public static void main(String[] args) {

    if(args.length == 1) {
        DisplayOrder.setFilePath(args[0]);
        DisplayOrder.display();
    } else{
        System.err.println("Please pass one argument");
    }
}

Я понял, что использую System.err.println () в моей главной. Изменение этого в System.out.println () исправило это.

1 Ответ

1 голос
/ 12 марта 2019

Не показывая ваш основной метод, я предполагаю, что вы ничего не пишите в "System.out" в вашем основном, особенно нет оператора System.out.println("Please pass one argument");, который выполняется.Таким образом, ваш модульный тест завершается неудачно для непредвиденного значения в "breakDownOutput[0]".

Что вам нужно сделать, это убедиться, что System.out.println("Please pass one argument"); выполняется, если для вашего main не было передано никаких аргументов.Также проверьте имя вашего класса Main.main(...), так как могут быть импортированы другие классы Main, которые никогда не будут выводить ожидаемые значения в System.out

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...