2 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
這是一個(gè) quick-n-dirty bash 腳本,它將找到當(dāng)前文件夾中的所有模糊測試并每次運(yùn)行它們 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
要使用此腳本,請創(chuàng)建一個(gè)名為的新文件fuzzAll.sh并將此代碼復(fù)制到其中,然后運(yùn)行./fuzzAll.sh以每次運(yùn)行所有模糊測試 10 秒,或傳遞不同的數(shù)字以運(yùn)行不同的持續(xù)時(shí)間(例如./fuzzAll.sh 30每次運(yùn)行 30 秒)
為了進(jìn)一步參考,存在一個(gè)允許多個(gè)模糊測試目標(biāo)的現(xiàn)有 github 問題,但沒有關(guān)于何時(shí)添加它的 ETA。

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
好吧,我已經(jīng)閱讀了 Go-fuzz 模塊的源代碼,事實(shí)是它不支持每次執(zhí)行的多個(gè)案例。
代碼在:\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
}
我希望將來可以支持多案例執(zhí)行。
- 2 回答
- 0 關(guān)注
- 143 瀏覽
添加回答
舉報(bào)