欢迎光临
我们一直在努力

Foundry测试实战:解锁区块链测试新姿势

1.普通测试实战​

环境搭建与项目初始化​ 在开始使用 Foundry 进行普通测试实战之前,首先需要搭建好开发环境并初始化项目。以 Ubuntu 系统为例,安装 Foundry 的步骤如下:

  • 安装依赖: sudo apt install curl git

  • 安装 Foundry:

curl -L https://foundry.paradigm.xyz | bash​
foundry

如果在安装过程中遇到 443 拒绝访问的问题,可能是 GitHub 的 raw 域名被屏蔽。解决方法是修改 hosts 文件:

sudo vi /etc/hosts
# 添加以下内容
185.199.111.133 raw.githubusercontent.com

安装完成后,可以使用forge –version命令验证是否安装成功。​ 接下来初始化一个新项目,使用以下命令:forge init my_project –no – git –no – git参数表示不初始化 Git 仓库。初始化完成后,项目目录结构如下:​

my_project
├── README.md
├── foundry.toml
├── lib
├── script
├── src
└── test

其中,src目录用于存放智能合约源码,test目录用于存放测试脚本,foundry.toml是项目的配置文件。 编写普通测试用例​,假设我们有一个简单的智能合约Counter.sol,代码如下:

// SPDX – License – Identifier: MIT
pragma solidity ^0.8.0;

contract Counter {


uint256 public count;

constructor() {


count = 0;
}

function increment() public {


count++;
}

function decrement() public {


require(count > 0, \”Count cannot be negative\”);
count–;
}
}

在test目录下创建测试脚本CounterTest.t.sol,编写测试用例:

// SPDX – License – Identifier: MIT
pragma solidity ^0.8.0;

import \”forge – std/Test.sol\”;
import \”../src/Counter.sol\”;

contract CounterTest is Test {


Counter counter;

function setUp() public {


counter = new Counter();
}

function testInitialCount() public {


assertEq(counter.count(), 0);
}

function testIncrement() public {


counter.increment();
assertEq(counter.count(), 1);
}

function testDecrement() public {


counter.increment();
counter.decrement();
assertEq(counter.count(), 0);
}

function testDecrementFromZero() public {


vm.expectRevert(\”Count cannot be negative\”);

赞(0)
未经允许不得转载:171主机测评 » Foundry测试实战:解锁区块链测试新姿势
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址