Покрытие Cobertura игнорирует аннотацию в проекте maven?

Я пытаюсь исключить определенные методы из охвата модульных тестов. Я использую 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? Спасибо.


person user1990198    schedule 29.05.2014    source источник


Ответы (3)


Попробуй это:

<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>, поэтому меня не удивит, если аннотации игнорирования не работают и там.

person Franco Victorio    schedule 07.01.2015

Чтобы @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 поддерживает только аннотации методов).

person embuc    schedule 16.04.2015

на данный момент я обнаружил, что есть патч для maven-plugin, который необходимо применить. надеюсь исправят в 2.7 ?!

https://jira.codehaus.org/browse/MCOBERTURA-176

person eriskooo    schedule 14.01.2015