求助,怎么修改我的测试文件或者执行命令可以跑通 TestExecute
执行命令:go test -run TestExecute -args -s qqqqq
输出结果:
$ go test -run TestExecute -args -s qqqqq
flag provided but not defined: -s
Usage of C:\Users\xxx\AppData\Local\Temp\go-build2919206642\b001\ptest.test.exe:
-test.bench regexp
run only benchmarks matching regexp
-test.benchmem
print memory allocations for benchmarks
-test.benchtime d
...
代码如下:
// main.go
package main
import (
"flag"
"fmt"
)
func main() {
// 其他处理逻辑
Execute()
// 其他处理逻辑
}
func Execute() {
s := flag.String("s", "abc", "xxxxxx")
fmt.Println(*s)
// 对得到参数的处理
}
// m_test.go
package main
import "testing"
func TestExecute(t *testing.T) {
Execute()
}
1
smilekung 2022-01-04 13:56:46 +08:00
根据文档 test 时 flag.Parse 并没有被调用 需要在 test 方法里显式调用
|
2
meiyoumingzi6 2022-01-04 14:07:32 +08:00
```golang
package main import ( "flag" "fmt" ) func main() { // 其他处理逻辑 Execute() // 其他处理逻辑 } func Execute() { s := flag.String("s", "abc", "xxxxxx") flag.Parse() // 加上这行 fmt.Println(*s) // 对得到参数的处理 } ``` |
3
MoYi123 2022-01-04 14:26:17 +08:00
func TestMain(m *testing.M) {
Execute() } 建议还是在 main 里把参数全部解析出了,通过参数传入 execute 比较好 |
4
FrankFang128 2022-01-04 14:31:03 +08:00
如 3 楼所说 +1
|
5
spotfg OP @meiyoumingzi6 我试了下,不行,仍然报错了无法携带参数
|
7
spotfg OP @smilekung google 搜出来也是这样说,可惜不对,不是我这种情况,我需要通过命令行传参。不传参是可以跑的通的
|