2 回答
TA贡献1784条经验 获得超9个赞
这是一个 quick-n-dirty bash 脚本,它将找到当前文件夹中的所有模糊测试并每次运行它们 10 秒:
#!/bin/bash
set -e
fuzzTime=${1:-10}
files=$(grep -r --include='**_test.go' --files-with-matches 'func Fuzz' .)
for file in ${files}
do
funcs=$(grep -oP 'func \K(Fuzz\w*)' $file)
for func in ${funcs}
do
echo "Fuzzing $func in $file"
parentDir=$(dirname $file)
go test $parentDir -run=$func -fuzz=$func -fuzztime=${fuzzTime}s
done
done
要使用此脚本,请创建一个名为的新文件fuzzAll.sh并将此代码复制到其中,然后运行./fuzzAll.sh以每次运行所有模糊测试 10 秒,或传递不同的数字以运行不同的持续时间(例如./fuzzAll.sh 30每次运行 30 秒)
为了进一步参考,存在一个允许多个模糊测试目标的现有 github 问题,但没有关于何时添加它的 ETA。
TA贡献1779条经验 获得超6个赞
好吧,我已经阅读了 Go-fuzz 模块的源代码,事实是它不支持每次执行的多个案例。
代码在:\Go\src\testing\fuzz.go
if len(matched) > 1 {
fmt.Fprintf(os.Stderr, "testing: will not fuzz, -fuzz matches more than one fuzz test: %v\n", matched)
return false
}
我希望将来可以支持多案例执行。
- 2 回答
- 0 关注
- 106 浏览
添加回答
举报