Shardeum自动化测试:快速搭建CI/CD流水线的完整指南
2026/8/23 16:06:45 网站建设 项目流程

Shardeum自动化测试:快速搭建CI/CD流水线的完整指南

【免费下载链接】shardeumShardeum is an EVM based autoscaling blockchain项目地址: https://gitcode.com/GitHub_Trending/sh/shardeum

Shardeum 是一个基于 EVM 的自动扩缩容(autoscaling)区块链平台。本文面向新手,介绍如何利用项目内置的 Jest 单元测试、代码质量检查和网络冒烟测试,在 10 分钟内搭建一条可用的 Shardeum CI/CD 自动化测试流水线。

一、认识 Shardeum 的测试体系 🧪

项目根目录的 package.json 中已预置了完整的测试脚本,无需从零配置:

命令作用适用阶段
npm test运行 Jest 单元测试(先自动执行编译)CI 必跑
npm run lintESLint 代码风格检查CI 必跑
npm run format-checkPrettier 格式校验CI 必跑
npm run test:smoke20 节点冒烟测试,带覆盖率合并前
npm run test:shardedNet分片网络完整测试发布前
npm run test:singleShardRotation单分片轮换测试发布前
npm run test:autoscaleNet自动扩缩容网络测试发布前

测试代码分布在两个目录:

  • 单元测试test/unit/,覆盖 EVM 预编译合约、状态管理、交易类型、存储层等模块,命名遵循*.test.ts规范
  • 网络级测试用例test/testCases/,按“启动网络 → 发送交易 → 归档 → 节点奖励 → 停止网络”的顺序编排,入口见 test/testCases/index.ts

Jest 配置集中在根目录的 jest.config.js,使用ts-jest处理 TypeScript,并把testTimeout调到了 5000000 毫秒——因为节点数量越多,测试耗时越长,这条提示在 CI 超时设置中非常关键。

二、环境准备:一键安装依赖 🚀

CI/CD 的第一步是构建一个干净、可复现的构建环境:

  1. 安装Node.js 20.19.3package.jsonengines字段锁定了精确版本,CI 中务必保持一致,避免版本漂移)
  2. 使用npm ci安装依赖(而不是npm install),它严格按锁文件安装,保证每次流水线结果一致
  3. 项目带原生模块(sqlite3),Linux CI Runner 上需预装python3makeg++等编译工具

安装完成后即可跑一次完整的单元测试自检:

npm test

三、设计三阶段 CI/CD 流水线 ✅

推荐把流水线拆成三个由快到慢的阶段,快速失败、节省资源:

阶段 1:代码质量门禁(约 1~2 分钟)

- run: npm ci - run: npm run lint - run: npm run format-check

阶段 2:单元测试(约 5 分钟)

- run: npm test

单元测试是流水线的核心,当前覆盖的模块包括 EVM 核心(test/unit/src/evm_v2/)、预编译合约、账户类型(test/unit/src/shardeum/)、AJV 交易校验模式(test/unit/src/types/ajv/)等。项目还维护了 unit-tests-todo.md,列出了 90 个待补测文件并按简单 → 复杂排序,是贡献者提升覆盖率的路线图。

阶段 3:网络冒烟测试(20 分钟起,仅主干分支触发)

- run: npm run test:smoke

冒烟测试会真实拉起 20 个节点(minNodes=20 nodesPerConsensusGroup=5),建议只在主干分支合并后运行,并通过--coverage产出覆盖率报告上传为构建产物。

💡 技巧:test/目录下带有.disabled后缀的文件(如main.test.ts.disabled)是被临时禁用的重型网络测试,CI 中默认不会执行。

四、常见问题排查 🔍

问题原因与对策
npm test卡在编译pretest会自动执行npm run compile,首次运行较慢,属正常现象
测试超时失败检查 CI 单步超时是否大于 Jest 的testTimeout(默认 5000 秒)
原生模块安装失败Runner 缺少编译工具链,安装build-essentialpython3
冒烟测试端口冲突多流水线并发时给各任务分配独立的工作目录与端口段
本地网络调试失败参考scripts/shardeumValidatorDebuggingScript/中的调试脚本,按 README 逐步排查验证节点配置

五、总结 🎯

Shardeum 的自动化测试体系可以归纳为三句话:

  1. 代码质量npm run lintnpm run format-check守门
  2. 核心逻辑test/unit/下的 Jest 单元测试保障
  3. 端到端行为test:smoke等网络级测试验证分片、扩缩容等核心能力

把这三层按“门禁 → 单测 → 冒烟”串成流水线,就能在每次提交后自动获得可靠的回归反馈。想深入了解项目架构与测试约定,可阅读 CLAUDE.md 和 test/README.md。

【免费下载链接】shardeumShardeum is an EVM based autoscaling blockchain项目地址: https://gitcode.com/GitHub_Trending/sh/shardeum

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询