专栏首页软件测试那些事super-jacoco-3-单测排坑指南

super-jacoco-3-单测排坑指南

从下载super-jacoco代码到极简项目的案例跑出来,一共排了3+1+1+1=6个坑,这里记录一下,供参考。

1、pom.xml中关于java.home的设置(3个坑)

这部分有三个坑,

首先是配置文件中关于变量设置的部分,JAVA.HOME指向了一个很奇怪的路径,需要修改为开发环境的JAVA_HOME, 或者建议修改为内置的JAVA_HOME变量。

<java.HOME>C:\app\java\jdk1.8.0_172</java.HOME>

第二个坑,则是lib/rt.jar和lib/jce.jar, 这两个jar包的位置是在jre中,而不是jdk中,默认的${JAVA_HOME}/lib/rt.jar如果JAVA_HOME指向一个JDK目录的话,会报找不到。

${JAVA.HOME}/jre/lib/rt.jar;${JAVA_HOME}/jre/lib/jce.jar

第三个坑,则是和操作系统相关的。如果是windows的操作系统,则需要像上述代码行一样使用”;”作为分隔符,而不是“:”。

2.mvn命令行中surefile插件问题-第四个坑

Super-Jacoco的单测使用了预先定义的命令行来执行编译、单元测试等工作,并使用了指定自行修改后并发行的jacoco-maven-plugin:1.0.2-SNAPSHOT。

String[] cmd = new String[]{unittestCmd + " -Dmaven.test.skip=false 
org.jacoco:jacoco-maven-plugin:1.0.2-SNAPSHOT:prepare-agent "
        + "compile test-compile org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test "
        + "org.apache.maven.plugins:maven-jar-plugin:2.4:jar 
        org.jacoco:jacoco-maven-plugin:1.0.2-SNAPSHOT:report
         -Dmaven.test.failure.ignore=true -Dfile.encoding=UTF-8 "
        + (StringUtils.isEmpty(coverageReport.getDiffMethod()) ? "" 
        : ("-Djacoco.diffFile=" + coverageReport.getDiffMethod()))
             + ">" + logFile};

对于笔者来说,这里的问题是maven-surefire-plugin:2.22.1,这个版本过于低了。对于@DisplayName这样的JUnit5的注解存在一个中文名称不支持的Bug,需要在maven-surefire-plugin:3.0.0-M3,也就是3.0的候选版本上才支持使用中文名称作为测试用例的名字。

3.jacoco-maven-plugin的问题-第五个

在上述命令中,使用了super-jacoco团队自行修改后并发行的jacoco-maven-plugin插件版本,也就是jacoco-maven-plugin:1.0.2-SNAPSHOT。因此,需要将项目代码库中jacoco目录下的maven-plugin内容上传到公司依赖库或者开发测试环境的本地私库。

但是这还不够。执行上述命令时,会报告找不到以下的pom,

com/xiaoju/base-pom/0.0.1/base-pom-0.0.0.1.pom

经过排查,发现在org.jacoco.build-1.0.2-SNAPSHOT.pom这个文件中的标签中提到了这部分内容。需要将这些标签整个删除掉,这样就能正常使用1.0.2-SNAPSHOT版本的插件了。

但是,这个私有发行的maven-jaococ-plugin版本,具体修改了什么内容呢?

4.Bash在windows上不能执行-第六个

Super-jacoco 在执行代码库下载以及mvn等命令时,是在CmdExecutor中通过执行”bash -c “来运行命令行的。

经过测试,这种方式方式必须是在Linux环境下才能跑起来。否则,要么就是找不到”bash”, 如果是在windows下的git bash下执行,则会因为路径解析的问题导致失败。而在Linux中运行则就是一条过。

文章分享自微信公众号:
软件测试那些事

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:风月同天测试人
原始发表时间:2022-02-04
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 前端-JavaScript排坑指南

    JavaScript总是给人以惊喜,学习不止,进步不断,今天继续补充JS容易搞错的几道笔试/面试题,为了秋招继续努力,欢迎一起为秋招努力的小伙伴共勉。

    grain先森
  • 现有项目集成flutter排坑指南

    1、如果选择,stable,我们遇到的情况是,IOS上接入之后是跑不了的。切到master上就OK了。

    brzhang
  • 【排坑指南之kubeSphere】2022年最新版-”kubeSphere3.2.1 Paas容器云平台“使用DevOps-CICD之”排坑指南“

    作者主页:https://blog.csdn.net/qq_48450494?type=blog

    CloudLog无名小歌
  • 基于docker-compose的Gitlab CI/CD实践&排坑指南

    经过长时间实操验证,终于完成基于Gitlab的CI/CD实践,本次实践的坑位很多, 实操过程尽量接近最佳实践(不做hack, 不做骚操作),记录下来加深理解。

    心莱科技雪雁
  • 最详细的 Spring Boot 多模块开发与排坑指南

    创建一个 SpringBoot 项目非常的简单,简单到这里根本不用再提。你可以在使用 IDEA 新建项目时直接选择 Spring Initlalize 创建一个...

    未读代码
  • 社区精华文章目录

    cailynyu
  • 【必看】社区文章目录

    Nanako
  • 全链路压测如何排障调优 — 先导篇

    我们团队保障了很多KA项目(第七次人口普查项目,广交会等)的后台稳定性,覆盖14亿中国人口,后台接口的并发量达到11万的QPS。在生产环境进行全链路压测的过程中...

    杨珂
  • B端产品运营:需求管理的避坑指南

    B端产品在需求搜集、分析、迭代上线的方法上与C端大同小异,但由于B端产品使用对象的角色多样性,跨部门协作的流程复杂性,B端产品的需求管理相比于C端“坑”更多。

    物流IT圈
  • 根据用户id获取对应的组织管理范围 - qps限频断层

    11:05需要运维或者相关权限同学协助查看整个服务链路监控:DNS ->DDOS ->WAF ->公网CLD ->政务认证服务->数据库各个服务监控指标是否存在...

    徐攀棒
  • 性能测试从零开始实施指南——场景模型篇

    今年跳槽到一家电商企业,性能测试需要从零开始。在性能测试不断推动落地过程中,积累了一些从零开始的经验和教训,自己也在有计划的写一个系列《性能测试从零开始实施指南...

    老_张
  • 创业公司的软件研发规范

    提交后,需求状态自动更新为:研发中、自动上屏到需求备注(方便code review)。

    dogstar
  • 一路踩坑构建Dubbo源码

    随着溪源目前对技术栈的求知欲,也开始入手Dubbo源码啦!!! 构建源码第一步: 必备开发环境:Java 1.5 以上的版本;Maven 2.2.1 或者以...

    沁溪源
  • 【腾讯云】压测支撑保障方案与ISV压测质量管理规范

    【导语】toB,toG 项目交付过程中,压力测试是重要的一环。 往往服务商与项目组更多的精力会先放在功能逻辑的实现,却忽视了在前期从架构层面暴露与解决后台可靠性...

    wenle
  • 【elasticsearch系列】SpringBoot整合elasticsearch客户端

    工欲善其事必先利其器,对于ES数据的查看,首先先安装一个谷歌浏览器的插件ElasticSearch Head,便于大家后期确认测试数据是否成功;

    沁溪源
  • ASP.NET Core开发者成长路线图

    来源: MoienTajik/AspNetCore-Developer-Roadmap.

    Enjoy233
  • 【玩转腾讯云】Windows云服务器排障思路

    Windows排障对我来说很简单,毕竟是鼠标操作,而且有那么多小工具辅助排障,非常轻松。本文更偏重通用能力,不仅适用腾讯云,其他云也适用。专对腾讯云的话,推荐我...

    shawyang

扫码关注腾讯云开发者

领取腾讯云代金券