Я недавно начал создавать свои собственные аннотации и для спорта TDD/BDD, я бы хотел, чтобы модуль тестировал мои аннотации, чтобы создать четкую спецификацию для них. Тем не менее, поскольку аннотации - это в основном просто причудливые интерфейсы, которые, насколько мне известно, не могут быть действительно созданы напрямую, есть ли какой-либо способ, чтобы отразить единичный тест аннотации?Можно ли тестировать Java-аннотации?
ответ
Это не то, для чего я обычно писал тесты, но вы могли бы просто создать набор тестовых классов, которые используют и злоупотребляют аннотацией, чтобы проверить, что он хранит значения его членов, что он имеет правильные значения по умолчанию и т. Д.
Это будет работать только с аннотациями Runtime, которые, конечно, будут указаны на правильных объектах.
По моему опыту, сами аннотации редко достаточно интересны, чтобы гарантировать единичные тесты - обычно это код, который использует их для тестирования. Но тогда я не из 100% -ной школы по охвату кода :-)
Вы не можете протестировать их напрямую, поскольку, как вы отметили, нет ничего, что можно было бы проверить. Можно доказать некоторые вещи, хотя:
- объектов с аннотациями в коде есть какие-либо ожидаемые аннотации во время выполнения
- Значения по умолчанию было инициализированы
- аннотаций связываются с вещами, которые вы ожидаете их
Когда вы тестируете устройство, одна из вещей, которые вы можете доказать, заключается в том, что ваша реализация соответствует интерфейсу. Итак, если аннотация подразумевает определенное поведение или свойства (например, Serializable
все должно быть сериализуемо), вы хотели бы представить это и в своих тестах.
Вы можете выполнить единичный тест, если ваше определение аннотации в порядке: может ли оно применяться к действительному набору элементов, доступно ли оно во время выполнения, если значение по умолчанию правильно инициализировано? Затем, позже, модуль проверит класс, который обработает вашу аннотацию.
Аннотации имеют некоторое влияние (в противном случае было бы бессмысленно использовать их). Поэтому не проверяйте присутствие аннотации, но эффект должен иметь.
Было бы здорово объединить тесты времени компиляции - например: http://code.google.com/p/javadude/ вики/аннотации. Это серьезная боль для тестирования! (У меня есть «тестовые» и «ожидаемые» копии проекта, которые я сравниваю после компиляции ...) –