Определение того, что нужно тестировать, а что нет - PullRequest
6 голосов
/ 29 ноября 2010

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

  1. Система должна захватывать имя пользователя, фамилию, адрес электронной почты и, опционально, почтовый адрес
  2. Имя и фамилиядолжен быть алфавитным
  3. Имя и фамилия могут быть не пустыми
  4. Адрес электронной почты должен быть действительным и обязательным
  5. Почтовый адрес не является обязательным.

Для реализации вышеперечисленного в Java.Я написал следующий код:

  1. Java-бин, содержащий вышеуказанные поля и имеющий соответствующие геттеры и сеттеры
  2. Комментарий к валидации для вышеуказанных полей
  3. Дао длясохранение пользователя
  4. Пользовательский интерфейс для ввода данных пользователя.

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

Ответы [ 2 ]

4 голосов
/ 29 ноября 2010

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

Получатели и установщики - определенно нет.Я использую Eclipse для их генерации, тестирование не стоит.

Аннотации для валидации - я бы не стал проверять, что они, например, правильно реализуют нулевую проверку, я полагаюсь на то, что они делают то, о чем говоритсяжесть, но я бы проверил их наличие.У правильного поля есть они?И если бы я настроил их с помощью регулярного выражения, я бы проверил, правильно ли я получил регулярное выражение.

Другой пример, если я сохраню свой POJO в Hibernate.Я не проверяю, что Session.save(myObj) работает, но то, что я мог сделать неправильно, например, границы транзакций и конфигурация отображения (все поля сохранены) и т. Д.

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

2 голосов
/ 29 ноября 2010

Во-первых, я знаю о TDD, вы никогда не пишете код первым.

Сначала вы пишете тест, так как ваш тест не пройден, вы пишете / генерируете код для его исправления, а затем пишете больше тестов для нарушения функциональности, которые вы намереваетесь достичь, и пишете / исправляете исходный код для него.

Лучше всего, если у вас есть 100% покрытие кода.

Обратитесь к Википедии, чтобы узнать, как начать проект с TDD - http://en.wikipedia.org/wiki/Test-driven_development

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