Считается ли хорошей практикой проверять наличие аннотаций с использованием отражения в модульном тесте? - PullRequest
5 голосов
/ 02 марта 2012

(этот пост объясняет, ПОЧЕМУ я хотел бы сделать это: Хорошие шаблоны для модульных тестов форм-бинов, которые имеют проверку на основе аннотаций в Spring MVC )

Считается ли хорошей практикой написание модульного теста для проверки конфигурации / аннотаций на поле или классе? Например, если у вас есть:

@AnnotatedClass
public class MyClass {

@AnnotatedField1
@AnnotatedField2
private string myField;

}

Есть ли смысл писать модульный тест, который проверяет наличие аннотаций выше?

Ответы [ 3 ]

5 голосов
/ 02 марта 2012

Основной ответ: «Да, можно проверить аннотации в модульных тестах»

Всегда спрашивайте себя "что я тестирую". Модульные тесты проверяют, что «код верен» на уровне класса / метода.

Вы на самом деле не «тестируете» код, но вы утверждаете, что кодеры правильно аннотировали определенные поля, что в вашем случае является частью утверждения, что «код верен», поэтому «да» - я думаю, что это приемлемо для "проверить" это.

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

2 голосов
/ 02 марта 2012

Я бы так не сказал, но это только мое личное мнение.Наличие отдельных аннотаций и их правильное использование легко проверяются в интеграционных тестах.Лично я следую правилу, согласно которому в модульных тестах я рассматриваю только код Java определенного класса.Отображения БД, аннотации JSR, маркеры GWT UiFields и т. Д. Тестируются в интеграционных тестах.

0 голосов
/ 02 марта 2012

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

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

...