该技能用于编写 bulloak 树规范(.tree 文件),为智能合约集成测试生成测试脚手架,核心是 BTT(分支树技术),通过结构化方式确保覆盖各类场景与边界情况。
安装:cargo install bulloak。 从 .tree 文件生成测试合约:bulloak scaffold -wf --skip-modifiers --format-descriptions <path/to/file.tree>。其中 --format-descriptions 会将分支首字母大写并在末尾加句号;--skip-modifiers 跳过 modifier 生成(因所有 modifier 放在单独的 Modifiers.sol 文件)。 校验 .t.sol 与 .tree 是否一致:bulloak check --skip-modifiers <path/to/file.tree>。
树文件语法:用 ├ 和 └ 表示分支。以 when 或 given 开头的分支为条件(when 表示输入或时间戳,given 表示合约状态前置条件,二者可互换);以 it 开头的为动作/断言(叶节点)。根节点在单树单文件时为 {FunctionName}_Integration_Concrete_Test;同文件多树时每个根须为 Contract::function,用 :: 分隔且共享同一合约名。
规则:测试文件须放在 tests/integration/concrete/{function} 目录,目录名用短横线格式;树文件命名为 {function}.tree,测试文件为 {function}.t.sol。树分支末尾不要加句号。
工作流:创建树文件→生成脚手架→运行 bulloak check 校验对齐。最佳实践包括按早回退守卫条件优先排序、使用一致术语(given null / given not null / when caller {role} / when amount {condition})、分组相关条件、为成功路径枚举全部副作用(事件用 {EventName} 表示)、避免与函数同名的 modifier、使用 3 空格缩进。
适用场景:为 Solidity 智能合约编写结构化集成测试用例。限制:需先安装 Rust/Cargo 与 bulloak;具体仓库目录结构由仓库 agent 提供。