Когда использовать отладочные и модульные тесты? - PullRequest
8 голосов
/ 02 октября 2010

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

Спасибо

Ответы [ 6 ]

15 голосов
/ 02 октября 2010

Отладка поможет вам диагностировать нерабочий код.

Юнит-тесты дают следующее:

  1. повторяемое средство определения того, что ваш код работает, как для распространенных сценариев, так и для крайних случаев. Они позволят вам реорганизовать код с уверенностью, что он все еще работает.
  2. очевидная спецификация кода. При отсутствии письменной спецификации ваши юнит-тесты являются спецификацией вашего кода. Это особенно верно в Agile мире.
  3. помощь в построении хорошо структурированного кода. Поскольку вы хотите запускать модульные тесты автономно, вы должны написать тестируемые классы, чтобы они принимали разные (иногда проверяемые) источники данных, приемники и т. Д. Путем поощрения этих абстракций и разделения проблем ваш код станет хорошо структурированным (вы можете конечно, написать хорошо структурированный код без юнит-тестов)

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

6 голосов
/ 02 октября 2010

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

3 голосов
/ 02 октября 2010

Если вы можете воспроизвести ошибку в модульном тесте, используйте модульный тест. Это будет продолжаться после того, как ошибка будет устранена, и в будущем "защитит" код от нее.

Если вам трудно найти часть кода, вызывающего оскорбления, то отладка, вероятно, является лучшим решением. Но в тот момент, когда вы знаете, где проблема - напишите тест, убедитесь, что он не прошел, а затем исправьте ошибку.

Отладка занимает больше времени, и это «одноразовое» решение. Если у вас есть возможность юнит-теста, предпочитает юнит-тест .

1 голос
/ 13 октября 2017

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

Сначала несколько комментариев о том, как отладка и модульное тестирование взаимодействуют

  • Сначала модульное тестирование может предотвратить отладку
  • Когда что-то достаточно сложно отладить, один из подходов - прекратить отладку вашей проблемы и начать модульное тестирование связанных вещей, используя похожие типы проблемного ввода. Возможно, вы захотите сначала упростить ввод, который вызывает проблемы (если ваша система детерминистична!)

  • Как и в приведенном выше пункте, вы можете проследить свой проблемный код через систему и начать тестирование объектов ниже по цепочке вызовов с идентичным вводом

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

1 голос
/ 02 октября 2010

Другая перспектива:

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

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

1 голос
/ 02 октября 2010

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

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