首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerMock ECLEmma覆盖问题

PowerMock ECLEmma覆盖问题
EN

Stack Overflow用户
提问于 2014-04-29 11:19:54
回答 9查看 33.3K关注 0票数 27

我们正在使用EasyMock和PowerMock与JUnit。使用的覆盖工具是ECLEmma。使用EasyMock,它正确地以绿色显示覆盖率(如所覆盖的那样)。但是,对于使用PowerMock进行单元测试的代码,覆盖率以红色显示(未发现)。在网上读过类似的问题。但是,我只想检查一下是否有解决方案。

谢谢

文卡特什

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2014-05-21 10:00:49

这是一个已知的问题:https://github.com/jayway/powermock/issues/422

而且已经有很长一段时间了,它不会很快被修复。

我建议你用eCobertura代替。

票数 12
EN

Stack Overflow用户

发布于 2016-02-24 03:30:51

是的,有一个解决办法:

首先,您必须添加这个maven依赖项:

代码语言:javascript
复制
<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中添加如下@规则:

代码语言:javascript
复制
public class Test {

   @Rule
   public PowerMockRule rule = new PowerMockRule();

您可以在这个博客使EclEmma测试覆盖率与PowerMock一起工作中找到更多信息。

票数 15
EN

Stack Overflow用户

发布于 2016-06-15 07:29:46

在我的项目中,这在大多数情况下都有效:

代码语言:javascript
复制
@Rule
public PowerMockRule rule = new PowerMockRule();
static {
    PowerMockAgent.initializeIfNeeded();
}

删除/注释@RunWith(PowerMockRunner.class) &在类路径中添加powermock-module-javaagent-1.6.5.jar后包括以下导入:

代码语言:javascript
复制
import org.junit.Rule;
import org.powermock.modules.junit4.rule.PowerMockRule;
import org.powermock.modules.agent.PowerMockAgent;

现在右击->Coverage As->Coverage配置,并在参数中添加以下行:

代码语言:javascript
复制
-ea -noverify -javaagent:path/to/powermock-module-javaagent-1.6.5.jar

单击Apply->Coverage。

还要注意,在这种情况下,@Before无法工作,因此必须从标记为@Before的方法中添加标记为@Test的方法中的所有内容。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23363212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档