2012-01-24 3 views
2

Я пытаюсь получить покрытие JBoss AS 7. Вот моя ветвь: https://github.com/OndraZizka/jboss-as/tree/TS-jacocoкод покрытия JBoss AS 7 TestSuite, используя JaCoCo - нет данных в jacoco.exec файлов

Когда я бегу mvn clean install -rf testsuite -DallTests -Dcoverage -fae я (почти) пустые jacoco.exec файлы - только некоторые метаданные (размер - несколько байтов). Виртуальная машина Java агд линия используется:

-javaagent:${jbossas.ts.dir}/target/jacoco-jars/agent/jacocoagent.jar=destfile=${basedir}/target/jacoco.exec,includes=${jboss.home}/modules/**/*,excludes=${basedir}/target/classes/**/*,append=true,output=file 

Эта строка передается Arquillian использовать для запуска JBoss AS 7 Тестов работает, аргумент передается (он появляется в boot.log AS7 в), но итоговый файл jacoco.exec составляет всего несколько байтов. В докладе, конечно, нет никакого освещения.

Что я делаю неправильно?

+0

jboss-7.x не имеет смысла. JBoss - это подразделение компании. Это похоже на тэг «microsoft-XP». Сохраните тег «jboss-as7». Или даже лучше, переименуйте тег jboss-7.x в jboss-as7. –

+0

Пожалуйста, просмотрите [тег: jboss] [tag wiki] (http://stackoverflow.com/tags/jboss/info). Тег используется для сервера приложений JBoss. Для этого нам не нужен новый тег. Уже есть тег для покрытия * версии 7.x * сервера приложений JBoss. Для этого нам не нужен новый тег. – Charles

ответ

2

Решено - параметры «включает» и «исключает» агента относятся к именам классов, а не к файлам.

Correct JVM агента аргумент для моего случая является:

-javaagent:${jbossas.ts.dir}/target/jacoco-jars/agent/jacocoagent.jar=destfile=${basedir}/target/jacoco.exec,includes=*,excludes=org.jboss.as.test.*,append=true,output=file 

Мой был Подход настроить в Maven jacoco плагин, чтобы получить аргумент, а затем жестко закодированы свойство в pom.xml, так как собственность, достигнутая плагин не передается плагину Surefire.

<profile> 
     <id>ts.jacoco.profile</id> 
     <activation><property><name>coverage</name></property></activation> 
     <properties> 
      <jvm.args.jacoco>-javaagent:${jbossas.ts.dir}/target/jacoco-jars/agent/jacocoagent.jar=destfile=${basedir}/target/jacoco.exec,includes=*,excludes=org.jboss.as.test.*,append=true,output=file</jvm.args.jacoco> 
     </properties> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.jacoco</groupId> 
        <artifactId>jacoco-maven-plugin</artifactId> 
        <version>${version.jacoco.plugin}</version> 
        <executions> 
         <execution><id>ts.jacoco-prepare</id> 
          <phase>process-test-classes</phase> 
          <goals><goal>prepare-agent</goal></goals> 
          <configuration> 
           <append>true</append> 
           <destFile>target/jacoco.exec</destFile> 
           <includes> 
            <include>*</include> 
           </includes> 
           <excludes> 
            <exclude>org.jboss.as.test.*</exclude> 
           </excludes> 
           <output>file</output> 
           <propertyName>jvm.args.jacoco</propertyName> 
          </configuration> 
         </execution> 
         <!-- Doesn't work currently - waiting for JaCoCo to fix this. Moved to the Ant plugin execution. --> 
         <execution><id>ts.jacoco.report</id> 
          <phase>none</phase> <!-- post-integration-test --> 
          <goals><goal>report</goal></goals> 
          <configuration> 
           <dataFile>target/jacoco.exec</dataFile> 
           <outputDirectory>target/coverageReport</outputDirectory> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
       <!-- Copy JaCoCo jars to have them for the Ant plugin. --> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-dependency-plugin</artifactId> 
        <executions> 
         <!-- Copy the ant tasks jar. Needed for ts.jacoco.report-ant . --> 
         <execution> <id>ts.jacoco.dep.ant</id> <goals><goal>copy</goal></goals> <phase>process-test-resources</phase> <inherited>false</inherited> 
          <configuration> 
           <artifactItems> 
            <artifactItem><groupId>org.jacoco</groupId><artifactId>org.jacoco.ant</artifactId><version>${version.jacoco.plugin}</version></artifactItem> 
           </artifactItems> 
           <stripVersion>true</stripVersion> 
           <outputDirectory>${basedir}/target/jacoco-jars</outputDirectory> 
          </configuration> 
         </execution> 
         <!-- Copy the agent jar. Needed for ${jvm.args.jacoco} to have this jar on known path. 
          If the ts.jacoco-prepare worked and really put the value into the property, this might go away. --> 
         <execution> <id>ts.jacoco.dep.agent</id> <goals><goal>unpack</goal></goals> <phase>process-test-resources</phase> <inherited>false</inherited> 
          <configuration> 
           <artifactItems> 
            <artifactItem><groupId>org.jacoco</groupId><artifactId>org.jacoco.agent</artifactId><version>${version.jacoco.plugin}</version></artifactItem> 
           </artifactItems> 
           <stripVersion>true</stripVersion> 
           <outputDirectory>${basedir}/target/jacoco-jars/agent</outputDirectory> 
          </configuration> 
         </execution> 

        </executions> 
       </plugin> 
       <!-- Ant plugin. --> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <executions> 
         <!-- DEBUG --> 
         <execution> 
          <id>ts.jacoco.debug</id> 
          <phase>post-integration-test</phase> 
          <goals><goal>run</goal></goals> 
          <inherited>false</inherited> 
          <configuration> 
           <target> 
            <echo>Jacoco argline: ${jvm.args.jacoco}</echo> 
            <echo>Jacoco jar: ${basedir}/target/jacoco-jars/org.jacoco.ant.jar</echo> 
           </target> 
          </configuration> 
         </execution> 
         <!-- Must be run using Ant due to https://sourceforge.net/tracker/?func=detail&aid=3474708&group_id=177969&atid=883354 --> 
         <execution> 
          <id>ts.jacoco.report-ant</id> 
          <phase>site</phase> <!-- post-integration-test --> 
          <goals><goal>run</goal></goals> 
          <inherited>false</inherited> 
          <configuration> 
           <target> 
            <taskdef name="report" classname="org.jacoco.ant.ReportTask"> 
             <classpath path="${basedir}/target/jacoco-jars/org.jacoco.ant.jar"/> 
            </taskdef> 
            <echo>Creating JaCoCo test coverage reports...</echo> 
            <mkdir dir="${basedir}/target/coverage-report"/> 
            <report> 
             <executiondata> 
              <fileset dir="${basedir}"> 
               <include name="**/target/jacoco.exec"/> 
              </fileset> 
             </executiondata> 
             <structure name="AS 7 project"> 
              <classfiles> 
               <fileset dir="${jboss.dist}/modules"> 
                <include name="**/*.jar"/> 
                <!-- We have 2.x in main. --> 
                <exclude name="com/sun/jsf-impl/1.*/**/*"/> 
                <!-- AS7-3383 - com/sun/codemodel vs. /1.0/com/sun/codemodel --> 
                <exclude name="com/sun/xml/**/*"/> 
                <exclude name="javax/faces/api/1.2/**/*"/> 
                <!-- AS7-3390 --> 
                <exclude name="org/apache/commons/beanutils/**/*"/> 
                <!-- AS7-3389 --> 
                <exclude name="org/python/jython/standalone/**/*"/> 
               </fileset> 
              </classfiles> 
              <sourcefiles encoding="UTF-8"> 
               <fileset dir="${jbossas.project.dir}"> 
                <include name="**/*.java"/> 
                <exclude name="testsuite/**/*.java"/> 
               </fileset> 
              </sourcefiles> 
             </structure> 
             <html destdir ="${basedir}/target/coverage-report/html"/> 
             <xml destfile="${basedir}/target/coverage-report/coverage-report.xml"/> 
             <csv destfile="${basedir}/target/coverage-report/coverage-report.csv"/> 
            </report> 
           </target> 
          </configuration> 
         </execution> 
        </executions> 
        <dependencies> 
         <dependency> 
          <groupId>org.jacoco</groupId> 
          <artifactId>org.jacoco.ant</artifactId> 
          <version>${version.jacoco.plugin}</version> 
         </dependency> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
+0

+1 вы можете опубликовать свои обновленные исключения и включить PLS. Также вы думаете, что у jacoco должен быть доступ к исходному коду, чтобы он показывал покрытие? –

+0

Просьба обновить, потому что это скорее комментарий, и скорее всего это приведет к закрытию «Слишком локализованное». – casperOne