b bajsj.com
📅 2026-05-24T06:12:23.463127+00:00 🔄 2026-05-24T17:56:42.134344+00:00

📘Foundry测试怎么用:命令、配置与编写约定的速查手册

详解 Foundry测试怎么用:forge 命令、foundry.toml 配置、测试文件命名约定、cheatcodes 与币安智能链分叉测试的实操要点。

Foundry测试怎么用 - Foundry测试怎么用:命令、配置与编写约定的速查手册
📷 主题配图

Foundry测试怎么用:命令、配置与编写约定的速查手册

第一次跑 Foundry 测试的人最常问的就是「这工具到底怎么用」。本文围绕 Foundry测试怎么用这个问题,把命令、配置、测试文件三件事一次说清,让你跑通第一份测试不再卡壳。完整学习路径请见 Foundry测试入门指南

一、forge 命令清单

开发期最常用的几条:

  • forge build:编译所有合约
  • forge test:跑全部测试
  • forge test -vv:打印 console.log
  • forge test --match-test test_Increment:只跑匹配名字的测试
  • forge test --gas-report:跑完输出 Gas 报告
  • forge coverage:行覆盖率
  • forge fmt:格式化 Solidity 代码

这些命令记不住没关系,写进 Makefile 或 package.json scripts 即可。这一约定与 Foundry测试最佳实践 推荐保持一致。

二、foundry.toml 配置核心字段

foundry.toml 是 Foundry 的中枢配置:

  • [profile.default]:默认配置
  • src/out/libs:源码、产物、依赖目录
  • solc_version:Solidity 版本
  • optimizeroptimizer_runs:优化配置
  • fuzz.runs:fuzz 运行次数(默认 256)
  • invariant.runs:不变量测试运行次数
  • eth_rpc_url:分叉测试默认节点

每个字段都有明确含义,必要时可以参考 Foundry测试官方文档

三、测试文件命名约定

  • 测试文件后缀 .t.sol,例如 Counter.t.sol
  • 测试合约继承 forge-std/Test.sol 中的 Test
  • 测试函数以 test 开头,fuzz 测试以 testFuzz_ 开头
  • 应当失败的测试用 testFail_ 前缀
  • setUp() 函数在每个测试运行前调用

这种命名约定让 forge 能自动发现并分类测试,无需额外注册。

四、断言库与 cheatcodes

断言库由 forge-std 提供:

  • assertEq(a, b):相等断言
  • assertGt/assertLt/assertGe/assertLe
  • assertTrue/assertFalse
  • assertApproxEqAbs/assertApproxEqRel:近似断言

cheatcodes 控制环境:

  • vm.prank 模拟发送者
  • vm.warp 跳时间
  • vm.deal 改余额
  • vm.expectRevert 断言回退
  • vm.expectEmit 断言事件

这套 API 是 Foundry测试中文文档 翻译版重点讲解的内容。

五、fuzz 测试的写法

声明测试函数参数即开启 fuzz:

  • function testFuzz_Deposit(uint256 amount)
  • vm.assume(amount > 0 && amount < 1e30) 过滤
  • 或用 bound(amount, 1, 1e18) 把输入约束到合理范围
  • 在 foundry.toml 的 [fuzz] section 调整 runs 值

fuzz 是 Foundry 最强大的能力之一,使用时建议把输入范围控制得贴近真实业务场景。

六、分叉测试操作

分叉测试让你能直接在主网/币安智能链状态下跑用例:

  • 在 foundry.toml 配置 eth_rpc_url
  • 在测试中 vm.createSelectFork(rpc_url, blockNumber)
  • 或在命令行用 --fork-url 一次性指定

这种模式特别适合复现线上事故,配合 Foundry测试漏洞案例 一起阅读效果更好。

七、与 Hardhat 协作

大型项目常常同时用:

  • Foundry 跑测试,Hardhat 跑部署
  • 共享 ABI 与 deployments 目录
  • CI 中并行执行两套流程

八、币安智能链测试注意事项

BNB Chain 上的 Foundry 测试有几个细节:

  • 分叉 URL 用付费节点防限流
  • gas price 在分叉测试中以真实链为准
  • 中文社区有详细配置范例

按上述命令、配置、约定三件事走一遍,Foundry 测试就能在你的项目中跑起来。掌握速查手册后,剩下的就是慢慢深入 cheatcodes 与 fuzz 的高级用法,让测试从「能跑」走向「跑得专业」。