gpt4 book ai didi

go - 如何使用 go1.18 运行在一个源文件中编写的多个模糊测试用例?

转载 作者:行者123 更新时间:2023-12-05 04:32:50 25 4
gpt4 key购买 nike

go 1.18 已经发布几天了。它从 Go 1.18 开始在其标准工具链中支持模糊测试

但是当我尝试编写我的案例时,它不能在一个包(或一个文件?)中运行多个案例。代码:

package xxx
func 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]

像这样: enter image description here

教程没有提示,thx 寻求帮助。(我在 stackoverflow 中的第一个问题,非常感谢!!!!)

我尝试在一个源文件中编写多个模糊案例,然后运行 ​​cmd: go test -fuzz 。期望它可以进行模糊测试,但出现错误:\

testing: will not fuzz, -fuzz matches more than one fuzz test: [FuzzReverse FuzzReverse2]

最佳答案

好的,我已经阅读了 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
}

希望以后能支持多case执行。

关于go - 如何使用 go1.18 运行在一个源文件中编写的多个模糊测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71584005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com