Я пытаюсь проверить мой основной метод (который должен принимать ровно один аргумент), если аргументы не переданы. Кажется, я не понимаю, чего мне здесь не хватает для достижения этой цели. Природа моей программы такова, что она читает входные данные из файла, создает объекты, передавая параметры, прочитанные из файла, и отображает выходные данные.
Сообщение об ошибке:
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 () исправило это.