问答 关于 jacoco 生成测试报告的疑问

ghost · 2021年04月07日 · 最后由 Shedray 回复于 2021年04月20日 · 3478 次阅读

最初的目的是想确定,能不能从 exec 文件中收集到,手工测试运行了哪些方法

在用 jacoco cli 命令行打开 exec 文件以后,生成的 exec 文件,看起来只到统计到类这一层的覆盖情况,那解析生成的报告是怎么确定修改了哪一行的?

希望大佬能帮忙解惑,多谢!

另外,有没有什么直接的方法能获取到哪些方法被测试覆盖了

共收到 7 条回复 时间 点赞

exec 文件中还有保存类对应的插桩数据,根据这个数据和 class 文件可以解析出类的哪些行和方法覆盖到了

ghost 关闭了讨论 04月08日 09:34
ghost 重新开启了讨论 04月08日 09:34
回复

抱歉,截图的文字打错了,我已经修改了。 实际发现 exec 文件只有 class 级别的覆盖信息,所以我比较纳闷他实际是怎么解析出来的。 因为连方法名和行数都没有体现出来,难道是这个信息存在其他地方?

你这应该是用 cli 的 execinfo 命令吧,这命令只输出了覆盖信息,并不代表 exec 文件里只有这些信息。。
至于覆盖了哪些方法。。report 中都有列出来。。

zhou 回复

嗯,有道理,多谢

在用 jacoco cli 命令行打开 exec 文件以后,生成的 exec 文件,看起来只到统计到类这一层的覆盖情况,那解析生成的报告是怎么确定修改了哪一行的?

exec 里只是存放所有的状态为 true 的探针吧,在解析报告的时候会根据 class 文件和 exec 存放的探针数据在解析出详细的覆盖率数据

另外,有没有什么直接的方法能获取到哪些方法被测试覆盖了

生成 csv 或者 xml 类型的覆盖率报告在自己解析一遍?

BeNice 回复

赞同,生成 XML 自己解析可以得到,我们最近就打算这么做

使用 report 指定生成的报告类型成 xml,然后就可以看到具体的覆盖信息了。exec 只包含一些插桩文件,不具备参考性。xml 的信息才是比较全的。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册