【发布时间】:2021-09-27 14:12:22
【问题描述】:
尝试运行“go test sum_test.go”返回错误:
./sum_test.go:18:13: 未定义: SumInt8 FAIL 命令行参数 [构建失败]
我正在学习 golang 入门课程。我们的老师分发了一个代码文件 sum.go 和一个测试文件 sum_test.go。尝试在 sum_test.go 上运行“go test”会返回上述错误。代码在我们的教师 Mac 上运行良好,但他在重现问题时遇到了困难。这是我的 Go 环境设置:https://pastebin.com/HcuNVcAF
sum.go
package sum
func SumInt8(a, b int8) int8 {
return a + b
}
func SumFloat64(a, b float64) float64 {
return a + b
}
sum_test.go
package sum
import "testing"
// Check https://golang.org/ref/spec#Numeric_types and stress the limits!
var sum_tests_int8 = []struct{
n1 int8
n2 int8
expected int8
}{
{1, 2, 3},
{4, 5, 9},
{120, 1, 121},
}
func TestSumInt8(t *testing.T) {
for _, v := range sum_tests_int8 {
if val := SumInt8(v.n1, v.n2); val != v.expected {
t.Errorf("Sum(%d, %d) returned %d, expected %d",
v.n1, v.n2, val, v.expected)
}
}
}
我没有看到特别的错误,所以我希望“go test sum_test.go”能够运行并成功。但是似乎在 sum.go 中找不到方法 SumInt8。
【问题讨论】:
-
go test的参数是包,而不是文件。这与构建和安装命令相同。试试go test .或简单的go test(或者,如果你真的想,列出构建测试所需的所有文件)。