Mic*_*jan 9 java unit-testing mocking powermock jacoco
我遇到了一个有趣的问题,如果使用的话,Jacoco会报告单位测试下的0%覆盖率@PrepareForTest.
长话短说,我的单元测试是使用@RunWith(PowerMockRunner.class)和@PrepareForTest(SomeStaticMethodClass.class)执行单元测试的组合,需要模拟静态方法.你可以阅读这两篇文章,我就嘲笑静态方法(发表文章1,2).模拟静态方法效果很好.不好的副作用是,当Jacoco使用@PrepareForTest注释运行单元测试时,任何测试的类单元都会被忽略,并且该类的Jacoco报告显示0%的覆盖率.我已经将问题专门针对@PrepareForTest注释.我这样做是通过创建一个简单的POJO单元测试,在该POJO上获得100%的覆盖率,然后在@PrepareForTest单元测试的注释中添加.在添加该注释后,Jacoco报告显示POJO覆盖率为0%.
所以任何人对此都有任何想法?
以下是一些技术信息:
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) Client VM (build 25.45-b02, mixed mode)
Apache Maven 3.0.4 (r1232337; 2012-01-17 02:44:56-0600)
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.4.201502262128</version>
. . .
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
. . .
</plugin>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.5.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-easymock</artifactId>
<version>1.5.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.5.6</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.2</version>
<scope>test</scope>
</dependency>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</reporting>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1263 次 |
| 最近记录: |