Страницы

Поиск по вопросам

вторник, 31 декабря 2019 г.

Как протестировать junit вывод в консоль?

#java #юнит_тесты #test_driven_development


> public void add(Item item) {

>     if (!item.header.equals(null)) {

>         this.items[this.index] = item;

>         this.index++;

>     } else {

>         System.out.println("Please header enter.");

>     } }


хочу добавить тест на


} else {

    System.out.println("Please header enter.");



используя конструкцию


  assertThat(???, is(???));


Но что сюда подставлять если у меня консольное приложение? А метод void?
    


Ответы

Ответ 1



Не завязывайте приложение на логирование в консоль. Используйте отдельный объект-логгер, которому будуте передавать строку и уровень логирования. Это стандарт, так делается во множестве крупных проектов. Приложения работают на серверах, там некому пялиться в монитор и читать логи, поэтому сообщения пишутся туда, куда удобно разработчикам и админам — в файл, в сокет, отправляются по http, что угодно ещё. Могут и в stdout, как в вашем случае, но должен быть выбор. И если в stdout, то System.out.println находится в коде логгера, а не в том месте, где происходит логирование. И когда вам нужно будет протестировать логгер, вы просто подсунете вместо него тестовый объект, в котором будете проверять, что такой-то метод с такой-то строкой был вызван. Уже есть множество написанных логгеров, я когда-то использовал log4j, но не могу сравнить с другими.

Комментариев нет:

Отправить комментарий