前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >super-jacoco-3-单测排坑指南

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

作者头像
Antony
发布2022-02-08 10:59:02
2.4K6
发布2022-02-08 10:59:02
举报

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

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

这部分有三个坑,

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

代码语言:javascript
复制
<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目录的话,会报找不到。

代码语言:javascript
复制
${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。

代码语言:javascript
复制
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,

代码语言:javascript
复制
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 删除

本文分享自 软件测试那些事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档