2014-07-21 4 views
0

Я пытаюсь создать отчет о покрытии кода для простого плагина Maven, который я разработал. Cobertura корректно генерирует отчет с тремя классами в моем проекте, но он сообщает о покрытии 0% кода, даже если тесты успешно выполняются. Я запустил его в режиме отладки, и нет ошибок или следов стека, сообщаемых Cobertura.Тест покрытия кода Кобертуры на плагине Maven

Моя конфигурация в файле POM довольно проста:

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 
<dependencies> 

    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-artifact</artifactId> 
     <version>3.0.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-compat</artifactId> 
     <version>3.0.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-plugin-api</artifactId> 
     <version>3.0.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.6</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-core</artifactId> 
     <version>3.0.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.maven.plugin-tools</groupId> 
     <artifactId>maven-plugin-annotations</artifactId> 
     <version>3.1</version> 
    </dependency> 
    <dependency> 
     <!-- version 2.1 uses sonatype aether. anything after 2.1 uses eclipse aether. --> 
     <groupId>org.apache.maven.plugin-testing</groupId> 
     <artifactId>maven-plugin-testing-harness</artifactId> 
     <scope>test</scope> 
     <version>2.1</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.twdata.maven</groupId> 
     <artifactId>mojo-executor-maven-plugin</artifactId> 
     <version>2.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.4</version> 
     <type>maven-plugin</type> 
    </dependency> 
</dependencies> 
<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.16</version> 
      <executions> 
       <execution> 
        <id>test-custom-plugin</id> 
        <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <forkMode>never</forkMode> 
         <forkCount>0</forkCount> 
         <reuseForks>true</reuseForks> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-plugin-plugin</artifactId> 
      <version>3.2</version> 
      <configuration> 
       <goalPrefix>MyCustomPlugin</goalPrefix> 
      </configuration> 
      <executions> 
       <execution> 
        <id>default-descriptor</id> 
        <goals> 
         <goal>descriptor</goal> 
        </goals> 
        <phase>process-classes</phase> 
       </execution> 
       <execution> 
        <id>help-descriptor</id> 
        <goals> 
         <goal>helpmojo</goal> 
        </goals> 
        <phase>process-classes</phase> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.5.2</version> 
     </plugin> 
    </plugins> 
</build>  

Cobertura работает на все мои других проекты (до сих пор), есть ли причина, по которой она будет неявкой покрытия для проекта плагина Maven ?

+0

Пожалуйста, покажите свой полный файл pom, иначе трудно понять, что происходит. – khmarbaise

+0

@khmarbaise: Я добавил дополнительные сведения из POM – FrustratedWithFormsDesigner

+0

Сначала я сомневаюсь, что ваши зависимости, в частности, к maven-assembly-plugin, maven-resources-plugin имеют смысл, кроме того, где вы находите свои тесты. Сообщается ли, что тесты будут выполнены? 'mvn clean test'? Моджо извлекается? Можете ли вы показать результат? Кроме того, какой плагин вы предпочитаете писать? Действительно необходимо? – khmarbaise

ответ

0

Похоже, проблема была в моей правильной конфигурации. Я изменил его на

 <plugin> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.16</version> 
      <executions> 
       <execution> 
        <id>test-custom-plugin</id> 
        <phase>test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <forkCount>1</forkCount> 
         <reuseForks>true</reuseForks> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

и отчеты теперь сгенерированы правильно. У меня возникла идея изменить параметры вилки из нескольких сообщений, которые я видел о похожих проблемах, связанных с созданием отчетов для плагинов сонара, и изменение параметров вилки разрешило проблему.

Смежные вопросы