#java #testing #junit #junit5
Вопрос:
Это мой код:
public class Foo { public static void main(String... args) { // reconfigure global logging // do something else } }
Как я могу проверить это с помощью JUnit (или, может быть, нет) без насмешек? Я хочу, чтобы эта main()
функция делала именно то, что она делала бы обычно, а затем перехватывала вывод консоли для утверждений. Конечно, не мешая другим тестам с реконфигурацией глобального ведения журнала, как упоминалось выше. В принципе, мне нужна новая JVM, чтобы запустить ее.
Комментарии:
1. Сделай именно это.
2. что вы имеете в виду: «перехватить его вывод на консоль»?
3. @Stultuske ну, он что-то напечатает на консоли, я хочу это получить и передать утверждения JUnit для проверки
Ответ №1:
Вы можете попробовать установить (на самом деле, чтобы издеваться) System.out
перед тестом, например:
public class Foo { public static void main(String... args) { System.out.print("Console output"); } }
Тест:
@Test public void canPrint() { ByteArrayOutputStream os = new ByteArrayOutputStream(); System.setOut(new PrintStream(os)); Foo.main(); assertEquals("Console output", os.toString()); }