Jenkins单元测试(上)

2021-06-04 18:05:22 浏览数 (1)

一.简介

每种编程语言都有自己的单元测试框架。执行单元测试的工作一般由构建工具来完成。Jenk-ins做的只不过是执行这些构建工具的单元测试命令,然后对测试报告进行收集,并呈现。

Jenkins并不会自动帮我们写单元测试,写单元测试还是要靠人。为什么要这样说呢?因为笔者发现,不少人认为Jenkins的自动化测试是指Jenkins代替人自动写测试。

二.单元测试

JUnit

JUnit是一个Java语言的单元测试框架,由Kent Beck和ErichGamma创建。当执行maven test命令时,Maven会执行测试阶段(包括单元测试),然后生成测试报告。

收集并展示JUnit测试报告的步骤如下: 1.安装Jenkins JUnit插件,搜junit

2.在Jenkins中加入junit步骤,通常将步骤放在post always中,因为当测试不通过时,我们依然可以收集到测试报告

  1. post {
  2. always {
  3. junit testResults: "**/target/surefire-reports/*.xml"
  4. }
  5. }

当pipeline运行结束后,在构建页的左边菜单栏及右边详情下都会多出一个链接:Test Result

3.单机“Test Result”进入,可以看到测试报告的详细信息

junit步骤的testResults参数支持Ant风格路径表达式。**/targetlsurefire-reports/*.xml表示只要是target/surefire-reports目录下的XML文件就会被当作JUnit测试报告处理,而不论target在哪个层级的目录下

JacoCo

JUnit只是方便我们写单元测试的一个框架,但是并没有告诉我们有多少代码被测试覆盖到了。而JaCoCo填补了这一空白。JaCoCo是一个免费的Java代码覆盖率的库,能帮助我们检测出代码覆盖率,并输出覆盖率报告。

JaCoCo提供了以下几个维度的覆盖率分析。

  • 指令覆盖率( Instruction Coverage )
  • 分支覆盖率( Branch Coverage )
  • 圈复杂度覆盖率( Cyclomatic Complexity Coverage )
  • 行覆盖率( Line Coverage )
  • 方法覆盖率( Method Coverage )
  • 类覆盖率( Class Coverage )

0 人点赞