我们正在使用EasyMock和PowerMock与JUnit。使用的覆盖工具是ECLEmma。使用EasyMock,它正确地以绿色显示覆盖率(如所覆盖的那样)。但是,对于使用PowerMock进行单元测试的代码,覆盖率以红色显示(未发现)。在网上读过类似的问题。但是,我只想检查一下是否有解决方案。
谢谢
文卡特什
发布于 2014-05-21 10:00:49
发布于 2016-02-24 03:30:51
是的,有一个解决办法:
首先,您必须添加这个maven依赖项:
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4-rule-agent</artifactId>
<version>1.6.4</version>
<scope>test</scope>
</dependency>然后,不要使用这个注释@RunWith(PowerMockRunner.class),只需在Test中添加如下@规则:
public class Test {
@Rule
public PowerMockRule rule = new PowerMockRule();您可以在这个博客使EclEmma测试覆盖率与PowerMock一起工作中找到更多信息。
发布于 2016-06-15 07:29:46
在我的项目中,这在大多数情况下都有效:
@Rule
public PowerMockRule rule = new PowerMockRule();
static {
PowerMockAgent.initializeIfNeeded();
}删除/注释@RunWith(PowerMockRunner.class) &在类路径中添加powermock-module-javaagent-1.6.5.jar后包括以下导入:
import org.junit.Rule;
import org.powermock.modules.junit4.rule.PowerMockRule;
import org.powermock.modules.agent.PowerMockAgent;现在右击->Coverage As->Coverage配置,并在参数中添加以下行:
-ea -noverify -javaagent:path/to/powermock-module-javaagent-1.6.5.jar单击Apply->Coverage。
还要注意,在这种情况下,@Before无法工作,因此必须从标记为@Before的方法中添加标记为@Test的方法中的所有内容。
https://stackoverflow.com/questions/23363212
复制相似问题