Foundry 测试流程
结合官网文档,我们以示例代码的 conter.t.sol
为例,讲解测试 Foundry 的基本步骤。
首先,该示例测试代码如下:
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
import "forge-std/Test.sol";
import "../src/Counter.sol";
contract CounterTest is Test {
Counter public counter;
function setUp() public {
counter = new Counter();
counter.setNumber(0);
}
function testIncrement() public {
counter.increment();
assertEq(counter.number(), 1);
}
function testSetNumber(uint256 x) public {
counter.setNumber(x);
assertEq(counter.number(), x);
}
}
以上代码背后的测试思路如下:
- 声明:在写 Solidity 时,首先写明
Identifier
和pragma
. - 导入依赖:导入需要的文件和模块,包括测试框架(如 Foundry 的
Test.sol
)以及需要测试的目标合约(如Counter.sol
)。 - 定义测试合约:定义一个新的合约用于测试,通常命名为
<TargetContract>Test
,继承自测试框架Test
合约,以便调用断言函数。 - 配置测试环境:编写
setUp()
函数来初始化测试环境,这可能包括部署新的合约实例,设置合约的状态和存储变量等。 - 编写测试用例:针对目标合约的每个函数或方法编写测试函数,它们通常命名为
testFunctionName
。在测试函数中,我们会调用目标函数,然后使用断言来验证函数的行为是否符合预期。
以上便是测试合约的基本流程。