第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

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

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

Go
慕的地6264312 2022-11-23 19:51:17
go 1.18 幾天前發(fā)布了。從 Go 1.18 開始,它在其標(biāo)準(zhǔn)工具鏈中支持模糊測試但是當(dāng)我試圖寫我的案例時,它不能在一個包(或一個文件?)中運行多個案例。代碼: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但結(jié)果是:testing: will not fuzz, -fuzz matches more than one fuzz test: [FuzzReverse FuzzReverse2]像這樣:本教程沒有提示,感謝幫助。(我在 stackoverflow 中的第一個問題,非常感謝?。。。。┪覈L試在一個源文件中編寫多個模糊案例,然后運行 cmd: go test -fuzz 。期望它可以進(jìn)行模糊測試,但出現(xiàn)錯誤:\測試:不會進(jìn)行模糊測試,-fuzz 匹配多個模糊測試:[FuzzReverse FuzzReverse2]
查看完整描述

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。


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

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í)行。


查看完整回答
反對 回復(fù) 2022-11-23
  • 2 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號