测程运行过程中,持续收集覆盖率数据,然后可以生成覆盖率报告
内部逻辑
1.报告路径准备
1.1)平台服务器,创建报告路径:reports/{服务名}/{测程主键id}/{报告主键id}/
2.生成jacoco二进制文件
2.1)在测试服务器,生成二进制文件 *.jacoco.exc
3.把二进制文件,copy到平台报告路径
4.拉取源码
4.1)把被测代码分支的源码,clone到报告路径
5.生成报告
5.1)全量覆盖率,直接用jacoco的报告
5.2)增量覆盖率,用diff-cover插件
核心代码
1.生成二进制文件
# 生成jacoco二进制覆盖率文件 def dump_jacoco_file(self, reset_after_dump=False): cmd = '{}/bin/java -jar {}/jacoco/lib/jacococli.jar dump --destfile {}-test.jacoco.exec --address 127.0.0.1 --port {}'.format( self.java_home, settings.COVERAGE_HOME, os.path.join(self.service_dir, self.service_name), self.port) if reset_after_dump: cmd += ' --reset' linux = RemoteLinux(self.ip, self.user_name, self.pass_word) return linux.run_cmd(cmd)