试图运行"go test sum_test.go“返回一个错误:
./sum_test.go:18:13:未定义: SumInt8 failed命令行-参数构建失败
我要上高朗的入门课。我们老师分发了一个代码文件sum.go和一个测试文件sum_test.go.尝试在sum_test.go上运行"go测试“将返回上述错误。这段代码在我们的老师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“运行,然后成功。但是,似乎无法在SumInt8中找到sum.go方法。
发布于 2019-02-08 12:19:26
$ go帮助包 许多命令应用于一组包: go行动包 通常,包是导入路径的列表。 一个导入路径,它是一个根路径,或者以一个。或者..。元素被解释为文件系统路径,并表示该目录中的包。 否则,导入路径P表示GOPATH环境变量中列出的某些DIR目录DIR/src/P中的包(有关详细信息,请参阅“go help gopath”)。 如果未给出导入路径,则此操作将应用于当前目录中的包。 作为特例,如果包列表是来自单个目录的.go文件列表,则命令将应用于完全由这些文件组成的单个合成包,忽略这些文件中的任何构建约束,而忽略目录中的任何其他文件。
列出测试中使用的当前目录中的所有文件:
go test sum_test.go sum.go或者简单地测试当前目录中的完整包。
go test例如,
$ go test -v sum_test.go sum.go
=== RUN TestSumInt8
--- PASS: TestSumInt8 (0.00s)
PASS
ok command-line-arguments 0.002s
$ 或者,对于完整的包
$ go test -v
=== RUN TestSumInt8
--- PASS: TestSumInt8 (0.00s)
PASS
ok so/sum 0.002s
$选项'-v‘产生详细的输出。
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)
}
}
}sum.go
package sum
func SumInt8(a, b int8) int8 {
return a + b
}
func SumFloat64(a, b float64) float64 {
return a + b
}https://stackoverflow.com/questions/54591045
复制相似问题