2013-02-18 2 views
5

Проблема в 1 предложении: «Cobertura не дает правильного покрытия кода»Отношения между Cobertura и безошибочный

Ниже мой pom.xml файл

<?xml version="1.0" encoding="UTF-8"?> 
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" 
     xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>a.b.c</groupId> 
    <artifactId>MyProject</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <repositories> 
     <repository> 
      <id>google-api-services</id> 
      <url>http://google-api-client-libraries.appspot.com/mavenrepo</url> 
     </repository> 
    </repositories> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java-version>1.6</java-version> 
     <maven.test.skip.exec>false</maven.test.skip.exec> 
     <cobertura-maven-plugin.version>2.5.2</cobertura-maven-plugin.version> 
    </properties> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>com.google.appengine</groupId> 
       <artifactId>appengine-maven-plugin</artifactId> 
       <version>1.7.4</version> 
      </plugin> 
      <plugin> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.1.1</version> 
       <extensions>false</extensions> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.0</version> 
       <configuration> 
        <source>${java-version}</source> 
        <target>${java-version}</target> 
        <encoding>${project.build.sourceEncoding}</encoding> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.1.3</version> 
       <configuration> 
        <testFailureIgnore>false</testFailureIgnore> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>${cobertura-maven-plugin.version}</version> 
       <configuration> 
        <formats> 
         <format>xml</format> 
         <format>html</format> 
        </formats> 
        <check/> 
       </configuration> 
       <executions> 
        <execution> 
         <goals> 
          <goal>cobertura</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    <reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>${cobertura-maven-plugin.version}</version> 
      </plugin> 
     </plugins> 
    </reporting> 
    <dependencies> 
     ... 
    </dependencies> 
</project> 

Когда я пытаться построить с этим пОМ, 2 вещи случаются

  1. Все тесты запустить 2 раза
  2. война производится
  3. отчет
  4. Cobertura показывает 0% охват

Пожалуйста, помогите мне отлаживать эту проблему.

+1

Каков точный 'mvn' команда (и параметров), которые вам использовать? – palacsint

+0

'mvn clean install' – JAM

+0

Я бы попробовал' mvn clean install cobertura: cobertura' – palacsint

ответ

2

Первыми вещами, которые я замечаю, является то, что вы используете чрезвычайно старую версию maven-surefire-plugin (2.1.3, которая составляет около 2006 года!), Но текущая версия 2.13.

Кроме того, вы связались с номером cobertura-maven-plugin с базой цели в целом cobertura, который просто ошибается.

Лучше упростить установку первого и получить его запустить, что означает просто определить версию Cobertura-Maven-плагин в свойстве и сделать установку в области, как это отчетность:

<properties> 
    <cobertura-maven-plugin.version>2.5.2</cobertura-maven-plugin.version> 
    </properties> 

и следующая в области отчетности:

<project> 
    .. 
    <reporting> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>cobertura-maven-plugin</artifactId> 
     <version>${cobertura-maven-plugin.version}</version> 
     </plugin> 
     ... 
    </plugins> 
    </reporting> 
</project> 

Просто проверить его с этой установкой и проверить, если код покрытие было создано или нет. Если нет, вам нужно показать больше своего проекта (pom, tests и т. Д.).

+0

Я выполнил ваши инструкции и получил тот же результат. Единственное различие заключается в том, что с 2.13 тесты не запускаются вообще. С 2.1.3 все тесты выполняются. Очень странно. По вашему предложению я опубликую весь pom.xml выше. Опять же, спасибо, что посмотрели. – JAM

+0

Также обратите внимание, что если у меня нет какой-либо фазы, cobertura не запускается вообще – JAM

1

Во-первых, я бы рекомендовал запустить mvn clean install cobertura: cobertura, если вы хотите, чтобы ваш отчет о покрытии был сгенерирован. Это вряд ли будет тем, что вы хотите сделать для каждой отдельной сборки (я лично использую только Cobertura в Jenkins).

Во-вторых, может показаться раздражающим, что все тесты выполняются дважды, но некоторые люди считают, что это более надежное и предполагаемое поведение. Это потому, что cobertura использует ваш байт-код. Поэтому есть (очень мало) шанс, что это испортится с результатами ваших тестов.

Но, конечно, для этого двойного теста отнимает много времени, это еще одна причина, почему вы не запустить Cobertura: Cobertura в Вашем жизненном цикле

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