如何将参数传递给 运行 测试代码
How do I pass arguments to run the test code
我有两个文件 main.go 和 main_test.go
在main.go
之下
package main
import (
"fmt"
"os"
"strconv"
)
func Sum(a, b int) int {
return a + b
}
func main() {
a, _ := strconv.Atoi(os.Args[1])
b, _ := strconv.Atoi(os.Args[2])
fmt.Println(Sum(a, b))
}
main_test.go以下我有
package main
import (
"flag"
"fmt"
"testing"
)
func TestMain(t *testing.M) {
args1 := flag.Arg(0)
args2 := flag.Arg(1)
fmt.Print(args1, args2)
os.Args = []string{args1, args2}
t.Run()
}
我正在尝试 运行 通过 go test main_test.go -args 1 2 -v 进行 go 测试,但我没有得到正确的输出 谁能指导我如何为测试主要功能,使其 运行 正常。
具有常量示例(测试用例)的测试比在测试中使用任何交互式内容更有效率,因为您可能需要它 运行 多次并自动进行。你为什么不像我的例子那样做?
main_test.go:
package main
import (
"testing"
)
func TestMain(t *testing.T) {
for _, testCase := range []struct {
a, b, result int
}{
{1, 2, 3},
{5, 6, 11},
{10, 2, 12},
} {
if Sum(testCase.a, testCase.b) != testCase.result {
t.Fail()
}
}
}
看看这个例子也很好:
Go By Example: Testing
我有两个文件 main.go 和 main_test.go
在main.go
之下package main
import (
"fmt"
"os"
"strconv"
)
func Sum(a, b int) int {
return a + b
}
func main() {
a, _ := strconv.Atoi(os.Args[1])
b, _ := strconv.Atoi(os.Args[2])
fmt.Println(Sum(a, b))
}
main_test.go以下我有
package main
import (
"flag"
"fmt"
"testing"
)
func TestMain(t *testing.M) {
args1 := flag.Arg(0)
args2 := flag.Arg(1)
fmt.Print(args1, args2)
os.Args = []string{args1, args2}
t.Run()
}
我正在尝试 运行 通过 go test main_test.go -args 1 2 -v 进行 go 测试,但我没有得到正确的输出 谁能指导我如何为测试主要功能,使其 运行 正常。
具有常量示例(测试用例)的测试比在测试中使用任何交互式内容更有效率,因为您可能需要它 运行 多次并自动进行。你为什么不像我的例子那样做?
main_test.go:
package main
import (
"testing"
)
func TestMain(t *testing.T) {
for _, testCase := range []struct {
a, b, result int
}{
{1, 2, 3},
{5, 6, 11},
{10, 2, 12},
} {
if Sum(testCase.a, testCase.b) != testCase.result {
t.Fail()
}
}
}
看看这个例子也很好: Go By Example: Testing