# 链上ETF研发日志 #3：合约测试完成

By [Keegan小钢](https://paragraph.com/@keeganlee) · 2025-07-31

---

昨天刚刚完成合约代码开发，原本预计接下来的单元测试至少还要花上几天时间。但没想到的是，仅仅一个晚上，在我洗澡前后，所有单元测试就已经**全部写完并通过**了，而且**覆盖率还非常高**。

如果是以前我一个人慢慢写测试代码，可能得花上一整个星期，调试各种边界条件、状态分支，还要不断排查 bug。而这次在 AI 助力下，我只需要不断 review 和 refine，测试逻辑就能快速成型并跑通。这种效率飞跃，让我**第一次在“测试环节”也感受到了爽感**。

为了进一步加快流程，我让 **Claude Code** 先基于所有已完成的合约，整理出一份**完整的测试用例文档**。我原以为它最多只能覆盖一些主流程路径，比如申购、赎回、参数正常的交互流程，结果它输出的文档却**远比我预期中详细和系统**：不仅涵盖主流程的每个阶段，还列出了大量边界条件和异常路径，包括：

*   非法参数输入的处理
    
*   状态变量未初始化时的行为
    
*   权限控制下的异常调用
    
*   重入攻击与溢出保护的验证
    

这让我意识到，Claude 在“结构化逻辑覆盖”方面的能力，已经不仅仅是“能用”，而是真的可以作为一位 **测试设计搭子** 来信任。

👇 这是 Claude 自动生成的测试用例文档结构截图，可以看到它对每个模块都进行了系统性拆解：

![](https://storage.googleapis.com/papyrus_images/fcfd820de056c819b4dffd2e65f3f0cebc974eccdaa8ded67e421361175a678d.png)

接下来，我就基于这份文档，让它开始编写实际的单元测试代码。它先写完了第一个合约的测试文件，并自动运行验证通过后就暂停，等待我进一步指令。确认没问题后，我直接让它把所有剩余合约的单元测试一起补上。

然后我就去洗澡了。

等我洗完出来，发现它已经把所有测试都写完了。**不少用例还涉及 Mock 合约和定制数据的构造，它也全部自动实现了**，而且结构清晰、逻辑闭环，几乎不需要我手动补漏。

我统计了一下，它总共编写了 **220 多个测试用例**，覆盖了所有合约逻辑、边界情况和异常路径，几乎没有遗漏。这远远超出了我对 AI coding agent 的预期。

说实话，**测试工程师真的有点危险了。**

到这里，合约代码开发完成，单元测试也已完成，下一步就要开始编写部署脚本并且部署到测试网上了。测试网部署之后，我也会尝试跑通整个链上 ETF 的操作流程，验证它是否真的能按照设想稳定运行。下一篇更新见。

---

*Originally published on [Keegan小钢](https://paragraph.com/@keeganlee/etf-3)*
