首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go测试<function>返回未定义的:<function>

Go测试<function>返回未定义的:<function>
EN

Stack Overflow用户
提问于 2019-02-08 11:02:57
回答 1查看 14K关注 0票数 11

试图运行"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

代码语言:javascript
复制
package sum

func SumInt8(a, b int8) int8 {
  return a + b
}

func SumFloat64(a, b float64) float64 {
  return a + b
}

sum_test.go

代码语言:javascript
复制
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方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-08 12:19:26

$ go帮助包 许多命令应用于一组包: go行动包 通常,包是导入路径的列表。 一个导入路径,它是一个根路径,或者以一个。或者..。元素被解释为文件系统路径,并表示该目录中的包。 否则,导入路径P表示GOPATH环境变量中列出的某些DIR目录DIR/src/P中的包(有关详细信息,请参阅“go help gopath”)。 如果未给出导入路径,则此操作将应用于当前目录中的包。 作为特例,如果包列表是来自单个目录的.go文件列表,则命令将应用于完全由这些文件组成的单个合成包,忽略这些文件中的任何构建约束,而忽略目录中的任何其他文件。

列出测试中使用的当前目录中的所有文件:

代码语言:javascript
复制
go test sum_test.go sum.go

或者简单地测试当前目录中的完整包。

代码语言:javascript
复制
go test

例如,

代码语言:javascript
复制
$ go test -v sum_test.go sum.go
=== RUN   TestSumInt8
--- PASS: TestSumInt8 (0.00s)
PASS
ok      command-line-arguments  0.002s
$ 

或者,对于完整的包

代码语言:javascript
复制
$ go test -v
=== RUN   TestSumInt8
--- PASS: TestSumInt8 (0.00s)
PASS
ok      so/sum  0.002s
$

选项'-v‘产生详细的输出。

sum_test.go

代码语言:javascript
复制
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

代码语言:javascript
复制
package sum

func SumInt8(a, b int8) int8 {
    return a + b
}

func SumFloat64(a, b float64) float64 {
    return a + b
}
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54591045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档