You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Foundry框架下Solidity的console.log无输出问题求助

Foundry测试中console.log无输出的解决方法

问题根源分析

你遇到的两个核心问题:

  1. console.log无输出:并非合约代码问题,而是Foundry测试的日志输出级别控制导致的。
  2. 继承console合约引发冲突:Test合约继承的ds-test中已经声明了log事件,和console.sol里的log函数重名,直接继承console必然导致标识符重复错误,完全没必要这么做。

解决步骤

1. 恢复正确的合约继承结构

保留你最初的合约写法即可,不需要继承console,只需要导入console.sol:

pragma solidity =0.8.17;
import "forge-std/console.sol";
import "forge-std/Test.sol";

contract ProjectTest is Test {
  ProjectRouter router;

  function setUp() public {
    router = new ProjectRouter();
    console.log("DONE"); // 现在会正常输出
  }

  function test() public {
    string memory name = router.name();
    assertEq(router.name(), "Router");
  }

  function test123() public {
    console.log(123); // 现在会正常输出
  }
}

2. 调整测试运行的日志级别

Foundry默认的测试输出级别不会显示console.log的内容,你需要在运行测试时添加足够的 verbosity 参数:

forge test -vvv
  • -v:基础输出
  • -vv:显示测试结果和失败信息
  • -vvv:显示console.log输出和栈跟踪
  • -vvvv:更详细的调试信息,包括调用栈等

3. 确保Foundry版本为最新

旧版本的Foundry可能存在console.log的兼容性问题,运行以下命令更新:

foundryup

验证

执行forge test -vvv后,你应该能在终端看到DONE和123的输出,同时测试用例依然正常通过。

内容的提问来源于stack exchange,提问作者Delvir0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:05:21