亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 go1.18 在一個源文件中運行多個模糊測試用例?

如何使用 go1.18 在一個源文件中運行多個模糊測試用例?

Go
慕的地6264312 2022-11-23 19:51:17
go 1.18 幾天前發布了。從 Go 1.18 開始,它在其標準工具鏈中支持模糊測試但是當我試圖寫我的案例時,它不能在一個包(或一個文件?)中運行多個案例。代碼:package xxxfunc FuzzReverse(f *testing.F) {    testcases := []string{"Hello, world", " ", "!12345"}    for _, tc := range testcases {        f.Add(tc) // Use f.Add to provide a seed corpus    }    f.Fuzz(func(t *testing.T, orig string) {        Reverse(orig)    })}func FuzzReverse2(f *testing.F) {    testcases := []string{"Hello, world", " ", "!12345"}    for _, tc := range testcases {        f.Add(tc) // Use f.Add to provide a seed corpus    }    f.Fuzz(func(t *testing.T, orig string) {        Reverse(orig)    })}然后我運行命令:go test  -fuzz .或者go test  -fuzz=Fuzz但結果是:testing: will not fuzz, -fuzz matches more than one fuzz test: [FuzzReverse FuzzReverse2]像這樣:本教程沒有提示,感謝幫助。(我在 stackoverflow 中的第一個問題,非常感謝?。。。。┪覈L試在一個源文件中編寫多個模糊案例,然后運行 cmd: go test -fuzz 。期望它可以進行模糊測試,但出現錯誤:\測試:不會進行模糊測試,-fuzz 匹配多個模糊測試:[FuzzReverse FuzzReverse2]
查看完整描述

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。


查看完整回答
反對 回復 2022-11-23
?
哆啦的時光機

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

}

我希望將來可以支持多案例執行。


查看完整回答
反對 回復 2022-11-23
  • 2 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號