如何将参数传递给 运行 测试代码

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