#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, но не могу сравнить с другими.
Комментариев нет:
Отправить комментарий