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

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

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

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

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

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

共收到 7 条回复 时间 点赞

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

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

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

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

zhou #5 回复

嗯,有道理,多谢

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

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

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

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

BeNice #7 回复

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

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

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