在前端开发过程中,我们经常会使用 Jest 进行单元测试,并且希望将测试结果集成到 SonarQube 平台中,以便于代码质量的监控和管理。为了实现这个目标,我们可以使用 npm 包 @mediainstinctgroup/jest-sonar-reporter,它能够将 Jest 测试结果转换为 SonarQube 可以识别的格式,并上传到 SonarQube 平台中。
安装
如果你还没有安装 Jest,则需要先执行下面的命令进行安装:
npm install jest --save-dev
然后,我们需要在项目中安装 @mediainstinctgroup/jest-sonar-reporter:
npm install @mediainstinctgroup/jest-sonar-reporter --save-dev
使用
在 Jest 的配置文件中,添加 SonarQube 的配置信息,以及使用 @mediainstinctgroup/jest-sonar-reporter:
-- -------------------- ---- ------- -- -------------- -------------- - - --------------------- ------------------------------------------ ---------------- ----- ------------------ -------- ------- ------- ---------- ------------------ ----------- --------------------------- ------------------- ------------------ - ------- - --------- --- ---------- --- ------ --- ----------- --- -- -- ---------- - ---------- - ------------- - ---------- ----- ---- ------- ---------------- -------------------- ----------- ------------ -- -- -- -------- - ---------- - --------- -------------------------- -- -- --
该配置文件中添加了以下内容:
- testResultsProcessor: '@mediainstinctgroup/jest-sonar-reporter',使用 @mediainstinctgroup/jest-sonar-reporter 处理测试结果。
- collectCoverage: true,统计测试覆盖率。
- coverageReporters: ['json', 'lcov', 'text', 'clover'],将测试覆盖率结果输出为 json、lcov、text 和 clover 格式。
- coverageDirectory: 'coverage',测试覆盖率报告存放的目录。
- coveragePathIgnorePatterns: ['/node_modules/'],忽略 node_modules 目录的测试覆盖率结果。
- coverageThreshold: {},设置全局的测试覆盖率要求。
- reporters: [],添加其他的测试结果的输出方式。
- globals: {},设置全局的配置。
在完成 Jest 的配置文件之后,我们需要将 SonarQube 的配置信息添加到项目中的 .env 文件中:
SONAR_HOST_URL=http://localhost:9000 SONAR_LOGIN=<your-sonarqube-token> SONAR_LANGUAGE=js SONAR_PROJECT_NAME=<your-project-name> SONAR_PROJECT_KEY=<your-project-key> SONAR_SOURCE_ENCODING=UTF-8
这里的 SONAR_LOGIN,需要使用 SonarQube 平台的 token 来进行认证。
最后,在项目中执行 Jest 测试,并上传测试结果到 SonarQube 平台:
npm test -- --coverage npx sonarqube-scanner
这里的 -- --coverage,表示需要统计测试覆盖率的结果。
示例代码
下面是一个简单的示例代码,用于演示如何在项目中使用 @mediainstinctgroup/jest-sonar-reporter:
// test/example.test.js const sum = require('../src/example'); test('adds 1 + 2 to equal 3', () => { expect(sum(1, 2)).toBe(3); });
参考文献:
- https://mediainstinct.com/articles/sonarqube-jest-integration-guide/
- https://www.npmjs.com/package/@mediainstinctgroup/jest-sonar-reporter
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600672663660cf7123b36515