qq_32675267 2021-03-22 09:59 采纳率: 0%
浏览 194

gradle下,jacoco统计powermock覆盖率异常问题

求助大佬们,现在Android Studio上的gradle项目中,做单元测试时,一用上powermock的prepareForTest注解,就会使jacoco覆盖率变为0 的异常情况。

网上搜集到的解决方法:

1)jacoco offline模式

2)使powermock agent在jacoco agent之后加载

但是,弄了offline还是覆盖率0(也可能配错了QAQ),第二个方法也不会弄。。。

求助大佬们,要怎么配置或者解决异常??

(希望能给个配置代码,跪谢)

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-23 23:31
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于Jacoco无法识别PowerMock 代理生成的测试数据而导致的。为了处理这种情况,你可以尝试以下步骤:

    1. 在你的build.gradle文件中添加以下依赖:
    dependencies {
        implementation 'org.jacoco:javaagent:0.8.4'
    }
    
    1. 将PowerMock 代理放在你的测试类之前,这样可以确保它被检测到并覆盖。
    2. 如果你使用的是JUnit 5,那么你需要将PowerMock 代理放在你的测试方法之前。
    3. 配置PowerMock 代理以忽略某些方法或接口。
    4. 使用@Ignore注解来标记你不想被检测的方法或接口。

    例如,如果你有一个名为MyService的服务类,并且你想让PowerMock 代理忽略它的一些方法,你可以这样做:

    import org.powermock.modules.junit4.PowerMockRunner;
    import org.powermock.modules.junit4.PowerMockRunnerDelegate;
    
    public class MyService {
    
        @Override
        public void myMethod() throws Exception {}
    
        // 更多的忽略方法...
    }
    

    然后,在你的测试方法中,你可以像下面这样使用@Ignore注解:

    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.MockedStatic;
    import org.powermock.core.classloader.annotations.PrepareForTest;
    import org.powermock.modules.junit4.PowerMockRunner;
    
    @RunWith(PowerMockRunner.class)
    @PrepareForTest(MyService.class)
    public class MyClassTest {
    
        @Test
        public void testMyMethod() throws Exception {
            // 测试逻辑
        }
    }
    

    请注意,这只是一个基本的例子,具体的配置可能需要根据你的具体需求进行调整。

    评论

报告相同问题?

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表