Краткий ответ: аннотации являются метаданными, поэтому они не являются частью кода, который можно охватить.Хотя есть еще немного о чем подумать.То, что должно быть включено в покрытие кода, а то, что может может быть включено, может сильно различаться в зависимости от используемой вами технологии.
Большинство инструментов покрытия (я знаю coberturaECLEmma) никогда не смотрю на исходный код, они смотрят на байт-код.Не каждая строка чего-то, что вы видите в исходном файле, соответствует чему-либо в исполняемых частях файла .class.
Аннотации делают это еще более сложным, потому что некоторые аннотации являются только метаданными в исходном коде,некоторые компилируются и хранятся в байт-коде.Конечно, аннотации, которые являются просто метаданными, не должны рассматриваться как код, поэтому они не должны включаться в информацию о покрытии.Даже аннотации, которые хранятся в двоичных файлах, не должны рассматриваться как код для покрытия.Что-то вроде
@MyAnnotation
class MyClass ...
не является исполняемым.Размещенная там аннотация не имеет исполняемого аспекта.Так что это не может быть покрыто.До этого момента это вполне определенно.
С этого момента я немного размышляю.Аннотации могут содержать поля данных, которые могут быть запрошены.Я не знаю, генерирует ли компилятор методы getter для этого (который в принципе является кодом, который может быть покрыт), или это открытые поля, которые читаются вызывающими непосредственно.