如何用go1.18 运行 在一个源文件中编写多个模糊测试用例?
how to run multi fuzz test cases wirtten in one source file with go1.18?
go 1.18 已发布几天ago.It 从 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]
像这样:
教程没有提示,谢谢帮助。(我在 Whosebug 的第一个问题,非常感谢!!!)
我尝试在一个源文件中编写多个模糊案例,然后 运行 命令: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 1.18 已发布几天ago.It 从 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]
像这样:
教程没有提示,谢谢帮助。(我在 Whosebug 的第一个问题,非常感谢!!!)
我尝试在一个源文件中编写多个模糊案例,然后 运行 命令: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执行