【发布时间】:2022-11-23 13:13:35
【问题描述】:
我有两个文件 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 test 但我没有得到正确的输出任何人都可以指导我如何编写用于测试主要功能的命令以使其正常运行。
【问题讨论】:
-
你的测试没有测试任何东西。您可以捕获 stdout 进行测试(google it),或者更好的是,创建一个函数
add接受两个数字并返回总和,然后从main调用它。然后你可以直接测试add。 -
谢谢@AbhijitSarkar,我是用 golang 编写单元测试的新手。在读取主函数内部的参数时,我询问了如何编写主函数的代码。
标签: go go-testing