2 回答

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

TA貢獻(xiàn)1779條經(jīng)驗 獲得超6個贊
好吧,我已經(jīng)閱讀了 Go-fuzz 模塊的源代碼,事實是它不支持每次執(zhí)行的多個案例。
代碼在:\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)注
- 137 瀏覽
添加回答
舉報