Должны ли модульные тесты использовать протоколирование? - PullRequest
13 голосов
/ 12 мая 2011

В этой теме, кажется, есть две тенденции:

  1. В некоторых ответах (например, this * ) предполагается, что модульные тесты ничего не должны регистрировать.
  2. Некоторые вопросы и ответы (например, этот ) предлагают различные методы и форматы ведения журналов, используемые в модульных тестах.

Должны ли модульные тесты регистрировать то, что они делают?Будет ли эта дополнительная информация полезна в отчетах о модульных тестах?Или модульные тесты должны молчать, пока они не дают сбой?

Мой вопрос касается модульных тестов Java, но ввод от программистов на других языках также может быть интересен.

Ответы [ 5 ]

7 голосов
/ 12 мая 2011

Это, очевидно, немного субъективно, но я не понимаю, почему вы отключили бы вход в свои юнит-тесты.

Я действительно думаю, что вы неправильно интерпретируете первый связанный пост;постер не утверждает, что вы не должны ничего регистрировать, он говорит, что проход / неудача не должен быть чем-то, что есть только в журналах.Он должен быть возвращен в среду тестирования.Это должен быть фрагмент данных, который полностью отделен от обычных журналов.

Я согласен с ним в этом.

Кроме того, у вас все еще может быть нормальное ведение журнала.В любом случае, у вас это есть в тех классах, которые вы тестируете (или должны были).Если тест не пройден, вы можете увидеть в журнале что-то, что поможет вам быстрее его отладить.Я не понимаю, как это может быть отрицательным моментом.

4 голосов
/ 12 мая 2011

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

Если вы запускаете из консоли, цветной вывод - это плюс, я думаю.

3 голосов
/ 12 мая 2011

Юнит-тесты действительно должны быть такими простыми и сфокусированными, чтобы провал теста уже документировал, что пошло не так. Вам не нужно читать журналы для теста, чтобы выяснить это.

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

1 голос
/ 26 января 2015

Обычно, когда вы пишете тесты, первое, что вы изучаете, это то, что юнит-тесты не должны соединяться ни с чем - с базой данных, файловой системой, интернетом. Модульный тест должен быть быстрым и работать независимо от среды, в которой вы работаете. Если он подключается к чему-либо, это интеграционный тест. Я бы сказал, что использование каркаса логирования, которое может значительно снизить скорость модульных тестов, противоречит философии модульного тестирования. Вся идея в том, что вы можете выполнить тысячи, десятки тысяч тестов на любой прихоти. Идеально было бы подключить ваш набор тестовых модулей к кнопке сохранения (не совсем правдоподобно, но вы меня поняли).

0 голосов
/ 02 января 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...