Ведение журнала приложений Assert в тестах Junit - PullRequest
0 голосов
/ 08 мая 2018

Мы хотим написать тесты, которые утверждают, что определенный контент регистрируется как часть запуска приложения. Как мы должны это сделать?

1 Ответ

0 голосов
/ 08 мая 2018

Основной подход, который я бы попробовал, состоял бы в следующем:

  1. Создайте пользовательское приложение для ведения журнала для вашей среды ведения журналов, которое подтвердило ожидаемое содержимое.
  2. Убедитесь, что ваш тест JUnit выполняется с этим приложением, возможно, потому, что он является частью вашей конфигурации ведения журнала тестирования, или, возможно, путем динамического добавления его при запуске теста.
  3. Пусть этот тест JUnit запустит запуск вашего приложения.
  4. В конце теста JUnit проверьте какое-либо свойство в appender, чтобы убедиться, что оно записало то, что вы ожидали, и не пройдите тест, если он этого не сделал.

Я не думаю, что есть много встроенных функций, чтобы помочь вам, поэтому вам, возможно, придется написать немного этой инфраструктуры самостоятельно, если вы не найдете чью-то библиотеку, чтобы помочь. Если вы входите в систему с помощью slf4j, я написал некоторый код, который заставляет пользовательского аппендера не пройти тест, если в журнале появляется сообщение об ошибке с похожим вопросом . Возможно, вы сможете использовать его в качестве отправной точки для того, как динамически включать аппендер при выполнении определенного теста JUnit. Есть также несколько примеров для java.util.Logging и log4j в " Как сделать утверждение JUnit для сообщения в логгере ".

В общем, операторы протоколирования не являются «основной» функциональностью и предназначены только для того, чтобы помочь понять процесс, поэтому обычно нет необходимости их модульного тестирования. Возможно, вам лучше просто проверить результаты запуска приложения - это то, что вы ожидаете, и не проверять отдельно, что оно также регистрирует что-то во время процесса. Предположительно, если он запускается правильно, он также будет запускать все записи в нем. Лично мне не нужно быть более изощренным, чем просто проверять, что не было зарегистрировано ошибок, как в этом связанном ответе, но, возможно, у вас есть более сложные требования.

...