Sonarqube:前端代码+单元测试集成

发表于:2021-6-25 09:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Lillian    来源:掘金

  前言
  最近有一个需求做前端代码和单元测试集成,集成不是我做的,公司其他部门同事做的,我只负责写前端的配置文件,记录一下我在集成过程中遇到的问题及解决方法。

  jest.config.js 中文件配置
  下面是做集成时,需要改的配置。
coverageDirectory: './coverage', // 执行单元生成文件所在的文件夹
collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}'], // 需要写单元测试文件,一般是src下面所有代码
coveragePathIngorePatterns: ['/node_modules/','/__tests__/'], // 不需要写单元测试的文件
testMatch: ['<rootDir>/src/**/__tests__/*.test.js'] // 配置单元测试文件

  如何生成单元测试覆盖率文件
  jest自动生成的clover.xml文件是不能识别的,需要安装jest-sonar插件,生成sonar可以识别的已经完成的单元测试组件的文件,需要将下面配置放在jest.config.js。
reporters: [
    'default',
    [
      'jest-sonar',
      {
        outputDirectory: './coverage', // 在这个文件夹下面
        outputName: 'report-name-test.xml', // 最后生成文件名字
        reportedFilePath: 'relative' // 相对路径
      }
    ]
 ]

  执行jest --coverage 可以生成两个文件一个是report-name-test.xml(这个是写完了单元测试组件生成的文件),一个是lcov.info (项目中需要写单元测试组件,生成的文件)

  前端单元测试集成配置
sonar-scanner 
-Dsonar.projectKey=${appname} 
-Dsonar.language=js // 语言
-Dsonar.sources=. // 分析文件目录默认值是.
-Dsonar.exclusions=**/__tests__/* // 不包括单元测试文件
-Dsonar.tests.inclusions=**/__tests__/* // 单元测试文件
-Dsonar.sourceEncoding=UTF-8 
-Dsonar.branch.name=$BRANCH_NAME // 扫描分支名
-Dsonar.testExecutionReportPaths=report-name-test.xml // jest-soanr 完成了的单元测试组件
-Dsonar.javascript.lcov.reportPaths=lcov.info // 需要完成的单元测试组件
-Dsonar.login=000000" // 集成的id,需要修改

  lcov.info改成相对路径
  生成的lcov.info文件的路径是绝对路径,需要改成相对路径,这个是在Jenkinsfile文件中写的。
sh "sed -i -e 's%/test/web/%./%g' lcov.info"

  lcov.info文件中路径的/test/web/,替换成./,如果文件路径是 /test/web/a.js,执行命令之后就会变成./a.js.(就是把绝对路径换成相对路径)第一个%和第二个%之间是原有的路径,第二个%和第三个%之间是替换成你想要的。

  在构建中加入单元测试
  在dockerfile中npm run build之后加入npm run jest,需要在packpage.json中的scripts加入"jest": "jest --coverage",此时需要注意不能使用运行监视模式,否则在构建中会卡在此步。

  总结
  其实项目中还遇到了很多问题,但是那些问题不涉及前端,需要和其他部门沟通,没有一一列举出来,我自己的感悟是即使有别人写好文档,有时候改问还是要问的,哈哈哈,文档嘛,终究不全面。有问题欢迎留言。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号