2015-05-18 14 views
5

मैं जाकोको के लिए बिल्कुल नया हूं और मुझे अपनी कोड कवरेज रिपोर्ट उत्पन्न करने में परेशानी हो रही है।JaCoCo: गायब वर्ग निर्देशिका

यह मेरा परियोजना संरचना है:

मेरे एकीकरण परीक्षणों "...- एकीकरण-परीक्षण" मॉड्यूल के भीतर रहते हैं। क्योंकि मेरे संकलित कोड लक्ष्य> इसी मॉड्यूल की कक्षाओं में ही उपलब्ध है

[INFO] Skipping JaCoCo execution due to missing classes directory: ...-integration-tests\target\classes 

यह सच है: जब मैं mvn मैं अपने प्रवेश के बाद मिल का उपयोग करते हुए अपने प्रोजेक्ट का निर्माण।

यह काम करने का सबसे अच्छा तरीका क्या है? अग्रिम में धन्यवाद!

+0

पहले जैसे ही आप आईटी एकीकरण परीक्षण चला रहे हैं, आपको परियोजना के ऐप का चलाना होगा .war टॉमकैट या इसी तरह के जेवीएम के पीछे। आपको jacocoagent.jar संलग्न करना होगा और destfile = jacocoIT.exe या अपने लक्ष्य JVM (Tomcat) की प्रारंभ स्क्रिप्ट के लिए कुछ नाम प्रदान करना होगा या विकल्पों को पास करना होगा। फिर, इसे कक्षा फाइलें मिलेंगी। अभी, यह एक परियोजना के रूप में आपके आईटी परीक्षण मॉड्यूल का इलाज कर रहा है और वहां कोई कक्षाएं नहीं हैं। आईटी परीक्षण स्रोत कोड के लिए आप कक्षा फाइलें कहां बना रहे हैं? –

उत्तर

0

यह इसलिए होता है क्योंकि JaCoCo "रिपोर्ट" मोजो "डिफ़ॉल्ट" Maven परियोजना लेआउट में सूत्रों का कहना है और कक्षाओं खोजने की कोशिश कर रहा है:

@Override 
boolean canGenerateReportRegardingClassesDirectory() { 
    return new File(getProject().getBuild().getOutputDirectory()).exists(); 
} 

तुम्हारा मैं स्पष्ट रूप से निर्धारित करके JaCoCo विन्यास सीमाओं को नाकाम करने में सक्षम था के समान लेआउट के बाद build.sourceDirectory और build.outputDirectory आपके परीक्षण मॉड्यूल के आंतरिक पर इंगित करने के लिए। उसके बाद Maven दूसरी बार के लिए यह संकलन करने की कोशिश की, तो मैं भी ओवरराइड डिफ़ॉल्ट संकलन निष्पादन को मिला है, मेरे टेस्ट मॉड्यूल pom.xml के महत्वपूर्ण (और साझा करने योग्य) हिस्सा अब इस तरह दिखना:

<?xml version="1.0" encoding="UTF-8"?> 
<project ... 
... 
    <parent> 
... 
    </parent> 

    <dependencies> 
... 
    </dependencies> 

    <properties> 
... 
    </properties> 

    <build> 
     <sourceDirectory>../../Source</sourceDirectory> <!-- tested sources root, in proper layout: src/main/java --> 
     <outputDirectory>../bin</outputDirectory> <!-- tested classes root, in proper layout: target/classes --> 

     <testSourceDirectory>${project.basedir}/../../Test/java</testSourceDirectory> <!-- if tests code also taken from outside --> 

     <testResources> 
      ... 
     </testResources> 

     <plugins> 
... 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <executions> 
        <!-- disabling default-compile --> 
        <execution> 
         <id>default-compile</id> 
         <goals> 
          <goal>compile</goal> 
         </goals> 
         <phase>compile</phase> 
         <configuration> 
          <source>1.7</source> 
          <target>1.7</target> 
          <includes/> 
          <excludes> 
           <exclude>**/*.java</exclude> 
          </excludes> 
         </configuration> 
        </execution> 
... 
       </executions> 
      </plugin> 

      <!-- typical jacoco usage --> 
      <plugin> 
       <groupId>org.jacoco</groupId> 
       <artifactId>jacoco-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <goals> 
          <goal>prepare-agent</goal> 
         </goals> 
        </execution> 
        <execution> 
         <id>report</id> 
         <phase>prepare-package</phase> 
         <goals> 
          <goal>report</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.16</version> 
       <dependencies> 
        <dependency> 
         <groupId>org.apache.maven.surefire</groupId> 
         <artifactId>surefire-junit4</artifactId> 
         <version>2.10</version> 
        </dependency> 
       </dependencies> 
       <configuration> 
... 
        <argLine>${argLine} -XX:PermSize=512M -XX:MaxPermSize=512M -Xmx1024M</argLine> 
... 
        <forkCount>1</forkCount> 
        <reuseForks>true</reuseForks> 
       </configuration> 
       <executions> 
... 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
संबंधित मुद्दे