Powermock Mockito with @PrepareForTest is not giving right coverage in JaCoCo maven plugin. Any alternatives?

Viewed 1378

While using PowerMock and Mockito for stubbing and testing private methods, if we include any class with @PrepareForTest({ AccountClientService.class }) like this, all the methods inside AccountClientService.java are not showing any coverage. Tried various methods from stackoverflow suggestions like on the fly, offline instrumentatations and went with @Rule public PowerMockRule rule = new PowerMockRule(), still no luck. Trail and error with various versions. MY POM looks like below :

4.0.0 com.codependent.jacocopower jacoco-powermock 0.0.1-SNAPSHOT

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
              <argLine>-javaagent:path\\to\\powermock\\powermock-module-javaagent\\2.0.2\\powermock-module-javaagent-2.0.2.jar</argLine>
         <!--       <useSystemClassloader>true</useSystemClassloader> -->
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${jacoco.version}</version>
            <configuration>
                <append>true</append>
            </configuration>
            <executions>
                <execution>
                    <id>default-instrument</id>
                    <goals>
                        <goal>instrument</goal>
                    </goals>
                    <configuration>
                        <includes>
                            <include>**/*test*</include>
                        </includes>
                    </configuration>
                </execution>
                <execution>
                    <id>default-restore-instrumented-classes</id>
                    <goals>
                        <goal>restore-instrumented-classes</goal>
                    </goals>
                    <configuration>
                        <includes>
                            <include>**/*test*</include>
                        </includes>
                    </configuration>
                </execution>
                <execution>
                    <id>Prepare-Jacoco</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                    <configuration>
                        <excludes>
                            <exclude>**/*test*</exclude>
                        </excludes>
                    </configuration>
                </execution>
                <execution>
                    <id>report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

 <dependencies>
    <dependency>
        <groupId>org.jacoco</groupId>
        <artifactId>org.jacoco.agent</artifactId>
        <version>${jacoco.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-module-junit4</artifactId>
        <version>${powermock.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.powermock</groupId>
        <artifactId>powermock-api-mockito</artifactId>
        <version>${powermock.version}</version>
        <scope>test</scope>
    </dependency>
     <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4-rule-agent</artifactId>
      <version>1.6.4</version>
      <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>

</dependencies>

<properties>
    <powermock.version>1.6.4</powermock.version>
    <jacoco.version>0.7.5.201505241946</jacoco.version>
    <jacoco.outputDir>${project.basedir}/target/jacoco.exec</jacoco.outputDir>
    <!-- <argLine>-javaagent:path\\to\\org.jacoco.agent\\0.7.5.201505241946\\org.jacoco.agent-0.7.5.201505241946-runtime.jar=destfile=${basedir}\\target\\jacoco.exec</argLine>
 --></properties>
1 Answers
Related