2008-09-21 3 views

ответ

20

Вы не должны писать тесты, которые:

  • Тест язык или IDE (то есть автоматически сгенерированные методы получения и установки)
  • не добавляют значение тестового жгута и убить ваш энтузиазм для модульного тестирования

То же самое относится к объектам .NET, которые имеют только свойства (иногда называемые объектами Info).

В идеальном мире у вас будет 100% -ное покрытие, но на практике этого не произойдет. Так тратьте деньги клиента, где он добавит большую выгоду, то есть написание тестов для классов со сложным состоянием и поведением.

Если ваш JavaBean становится более интересным, вы можете, конечно, добавить тестовый пример позже. Одной из распространенных проблем, связанных с Unit Testing/TDD, является ошибочное убеждение, что все должно быть идеально в первый раз.

6

Если это не стоит тестировать, это не стоит писать.

Это не всегда означает, что вы должны писать тесты. Иногда это означает, что вы должны удалить код. Вам нужны эти бобы? Действительно ли они делают что-то важное? Если вам это нужно, вы должны написать тесты. Если нет, удалите код и живите в более счастливой жизни, зная, что у вас меньше средств для поддержания.

2

Вам нужно только проверить, что вы хотите работать правильно.

(Извините, что тот, кто я украл эту цитату)

4

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

Но учтите следующее: внутренняя логика аксессоров теперь мертва проста, но может измениться в будущем, и - что гораздо важнее - вы можете свободно менять ее на все, что захотите, если у вас есть тесты для методов. Таким образом, вы получаете свободу и уверенность с помощью нескольких тестовых корпусов. Звучит неплохо, а?

1

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

3

Как вы можете безопасно реорганизовать непроверенный код? Что произойдет, когда ваш bean pojo изменится, если у вас нет тестов? Вы создаете Anemic Domain Model?

2

Вы должны проверить вещи, имеющие какое-то значение. Getters и seters обычно не содержат никакой логики и просто используются в Java из-за отсутствия свойств. Я считаю, что тестирование их так же глупо, как проверка того, что Java действительно возвращает значение каждый раз, когда вы оцениваете «a.x».

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

1

Как Максим уже сказал: тесты не добавят дополнительной функциональности вашему приложению, но позволят вам вносить изменения с большей уверенностью. Чтобы определить, какие классы/методы могут быть подвергнуты модульной проверке, я всегда задаю себе два вопроса:

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

Если на оба вопроса отвечает да, необходимо провести единичный тест.

1

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

1

Если у него есть внешний интерфейс и содержит код, написанный человеком (в отличие от автоматического создания IDE или компилятором), то он определенно должен быть протестирован.

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

3

Другое эмпирическое правило (аналогично тому, что говорили другие) - это «тест всего, что может сломаться». Для меня это исключает автогенераторы и сеттеры, но включает рукописные, содержащие некоторую логику.

Смежные вопросы