-1

我有两个文件 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 函数的命令以使其正常运行。

4

1 回答 1

-1

具有常量示例(测试用例)的测试比在测试中使用任何交互式事物更有效率,因为您可能需要它多次自动运行。你为什么不像我的例子那样做呢?

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

于 2022-01-10T08:19:19.133 回答