Go测试框架使用global flag.(*FlagSet)
实例.在测试文件中创建的任何标志都可以从命令行获得.测试框架不使用的位置参数可以通过flag.Args()
(和flag.Arg
flag.NArg
)获得.位置参数需要--
才能在命令行上将它们分开.
例如:
package testflag
import (
"flag"
"testing"
)
var value = flag.String("value", "", "Test value to log")
func TestFlagLog(t *testing.T) {
t.Logf("Value = %q", *value)
t.Logf("Args = %q", flag.Args())
}
假设上述测试位于多个目录testflag
、testflag/a
和testflag/b
中,运行go test -v ./... -value bar -- some thing
个输出:
=== RUN TestFlagLog
testflag_test.go:11: Value = "bar"
testflag_test.go:12: Args = ["some" "thing"]
--- PASS: TestFlagLog (0.00s)
PASS
ok testflag 0.002s
=== RUN TestFlagLog
testflag_test.go:11: Value = "bar"
testflag_test.go:12: Args = ["some" "thing"]
--- PASS: TestFlagLog (0.00s)
PASS
ok testflag/a 0.001s
=== RUN TestFlagLog
testflag_test.go:11: Value = "bar"
testflag_test.go:12: Args = ["some" "thing"]
--- PASS: TestFlagLog (0.00s)
PASS
ok testflag/b 0.002s