51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2215|回复: 3
打印 上一主题 下一主题

android jacoco 统计多模块

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:07
  • 签到天数: 527 天

    连续签到: 4 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-8-14 10:41:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    本帖最后由 测试积点老人 于 2019-8-14 10:43 编辑

    Android项目进行了模块化,手工运行完测试用例之后,jacoco只统计一个模块下面的代码覆盖,其它模块的统计出来的数据都是为0。
    1. build.gradle:

    2. apply plugin: "jacoco"

    3. def coverageSourceDirs = ['../app/src/']
    4. task jacocoTestReport(type: JacocoReport) {
    5. group = "Reporting"
    6. description = "Generate Jacoco coverage reports after running tests."
    7. reports {
    8. xml.enabled true
    9. html.enabled true
    10. }
    11. classDirectories = fileTree(
    12. dir: './build/intermediates/classes/product/debug',
    13. excludes: ['/R*.class',
    14. '/$InjectAdapter.class',
    15. '/$ModuleAdapter.class',
    16. '*/$ViewInjector*.class'
    17. ])
    18. sourceDirectories = files(coverageSourceDirs)
    19. executionData = files("$buildDir/outputs/code-coverage/connected/coverage.ec")
    20. doFirst {
    21. new File("$buildDir/intermediates/classes/").eachFileRecurse { file ->
    22. if (file.name.contains('[color=#222527][font=Helvetica, Arial, &quot][size=15px]覆盖数据都有,只是HTML文件显示代码都未运行,可以确认MainActivity是有运行的,但并未统计出来。求大神解答[/size][/font][/color]
    23. ))
    24. }
    25. }
    26. }
    27. }
    复制代码
    统计代码如下:
    1. OnCreate:
    2. String SDCARD_PATH = Environment.getExternalStorageDirectory().getPath();
    3. String DEFAULT_COVERAGE_FILE_PATH = SDCARD_PATH + "/coverage.ec";
    4. File file = new File(DEFAULT_COVERAGE_FILE_PATH);
    5. if (!file.exists()) {
    6. try {
    7. file.createNewFile();
    8. } catch (IOException e) {
    9. e.printStackTrace();
    10. }
    11. }

    12. OnDestroy:
    13. public void generateCoverageReport() {
    14. String SDCARD_PATH = Environment.getExternalStorageDirectory().getPath();
    15. String DEFAULT_COVERAGE_FILE_PATH = SDCARD_PATH + "/coverage.ec";
    16. Log.d("generateCoverageReport", "generateCoverageReport():" + DEFAULT_COVERAGE_FILE_PATH);
    17. OutputStream out = null;
    18. try {
    19. out = new FileOutputStream(DEFAULT_COVERAGE_FILE_PATH, false);
    20. Object agent = Class.forName("org.jacoco.agent.rt.RT").getMethod("getAgent").invoke(null);
    21. out.write((byte[]) agent.getClass().getMethod("getExecutionData", boolean.class).invoke(agent, false));
    22. } catch (Exception e) {
    23. Log.d("generateCoverageReport", e.toString(), e);
    24. } finally {
    25. if (out != null) {
    26. try {
    27. out.close();
    28. } catch (IOException e) {
    29. e.printStackTrace();
    30. }
    31. }
    32. }
    33. }
    复制代码
    覆盖数据都有,只是HTML文件显示代码都未运行,可以确认MainActivity是有运行的,但并未统计出来。求大神解答

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:10
  • 签到天数: 1516 天

    连续签到: 5 天

    [LV.Master]测试大本营

    2#
    发表于 2019-8-15 10:22:33 | 只看该作者
    看看日志
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:28
  • 签到天数: 2812 天

    连续签到: 5 天

    [LV.Master]测试大本营

    3#
    发表于 2019-8-15 11:49:52 | 只看该作者
    有报错不
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:59
  • 签到天数: 1801 天

    连续签到: 5 天

    [LV.Master]测试大本营

    4#
    发表于 2019-8-15 13:56:18 | 只看该作者
    需要在每个模块中插桩才行
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-16 12:01 , Processed in 0.070287 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表