Я пытаюсь исключить определенные методы из охвата модульных тестов. Я использую Cobertura, потому что обнаружил, что начиная с версии 2.0 они представили аннотацию игнорирования покрытия для исключения методов и классов: https://github.com/cobertura/cobertura/wiki/Coverage-Annotations
Я настроил свой проект так, как он должен быть, создал @interface под названием "CoverageIgnore", как в статье, и аннотировал некоторые методы. Я использую Cobertura 2.0.3, и при создании отчета аннотации не работают :(
Я также нашел эту статью - https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference#ignore-method-annotation, в котором говорится о некоторой конфигурации задачи инструмента в cobertura, но, похоже, она совместима с Ant:
<cobertura-instrument>
<ignoreMethodAnnotation annotationName="foo.bar.CoverageIgnore"/>
</cobertura-instrument>
Есть ли что-то подобное для моего проекта maven? Спасибо.
Ответ 1 · рейтинг 1 · Franco Victorio
Попробуй это:
<build>
...
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
...
<instrumentation>
<ignoreMethodAnnotations>
<ignoreMethodAnnotation>foo.bar.CoverageIgnore</ignoreMethodAnnotation>
</ignoreMethodAnnotations>
</instrumentation>
...
</configuration>
...
</plugin>
...
</plugins>
...
</build>
Обратите внимание, что это находится в элементе <build>. Я не пробовал это в элементе <reporting>, но я знаю, что <ignore> и <exclude> работают только в <build>, поэтому меня не удивит, если аннотации игнорирования не работают и там.
Ответ 2 · рейтинг 1 · embuc
Чтобы @CoverageIgnore работал, вы должны использовать его для настройки инструментария в разделе сборки вашего файла pom. У вас может быть полная спецификация для отчетов в родительском pom (если он многомодульный), и в вашем дочернем pom есть только что-то вроде этого:
<build>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<configuration>
<instrumentation>
<ignoreMethodAnnotations>
<ignoreMethodAnnotation>where.it.is.CoverageIgnore</ignoreMethodAnnotation>
</ignoreMethodAnnotations>
</instrumentation>
</configuration>
</plugin>
</plugins>
</build>
Таким образом, плагин будет выполняться в разделе сборки и правильно инструментировать ваши аннотированные классы (напоминание: cobertura поддерживает только аннотации методов).
Ответ 3 · eriskooo
на данный момент я обнаружил, что есть патч для maven-plugin, который необходимо применить. надеюсь исправят в 2.7 ?!
https://jira.codehaus.org/browse/MCOBERTURA-176