Страницы

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

понедельник, 24 декабря 2018 г.

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

> 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?


Ответ

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

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

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