我使用Foundry框架编写测试,在对函数输入address 参数做模糊测试时,首先是测试的运行花费了很长时间。最后测试运行出来还失败了。但是,做fail测试时,对地址的模糊测试却又成功了。代码如下 失败的测试
function testRetrieveLostToken(address tokens) public {
_aliceDepositGLP();
vm.stopPrank();
vm.assume(tokens.isContract() && tokens != SGLP && tokens != address(0));
token.retrieveLostTokens(tokens);
}
成功的测试
function testFail_RetrieveNonContracts(address tokens) public {
_aliceDepositGLP();
vm.stopPrank();
vm.assume(!tokens.isContract() && tokens != SGLP && tokens != address(0));
token.retrieveLostTokens(tokens);
}
我的问题是,为什么对地址的模糊测试会失败,难道有一些特殊地址是不允许使用的吗,可是这样的话,Fail test 又成功了。