Go示例无法运行。

16

我想要给一个包添加一个例子,并通过go test运行,但是这个例子从未被执行。

例如,请参见此代码片段:https://gist.github.com/85469ecc65bb5bb85857

这个代码片段包含example_test.go

package cow_test

import (
    cow "gist.github.com/85469ecc65bb5bb85857"
)

func Example() {
    cow.Poke()
}

然而当我运行这个时:

# go test -v example_test.go 
testing: warning: no tests to run
PASS
ok      command-line-arguments  0.002s

然而,标准库中的其他包都可以正常使用:

# cd /usr/lib/go/src/errors
# go test -v example_test.go 
=== RUN: Example
--- PASS: Example (0.00s)
PASS
ok      command-line-arguments  0.002s

我的例子有什么问题?


3
在尝试编写测试之前,你应该阅读关于测试的文档(http://golang.org/pkg/testing/)。这里有一些根本性错误需要解决。请注意涵盖这些内容。 - Simon Whitehead
2
我为您提供了文档链接。 - Simon Whitehead
12
你的评论基本上是一个“RTFM”的评论,没有任何具体的例子说明哪里出了问题或需要关注的地方。我在提供的场景中没有看到任何违反测试文档的内容。当然也没有任何“根本性”的问题。 - phemmer
2
@Patrick RTFM 可以是完全有效的回答。我们期望提问者进行研究和阅读基本相关文档,而不是成为“求助吸血鬼”。 - Dave C
3
@DaveC 除了这种情况,显然我已经阅读了文档,而Simon没有。如果他提供了任何额外的信息,这将是明显的,并且可以避免给大家带来麻烦。 - phemmer
显示剩余3条评论
1个回答

29

根据文档

没有输出注释的示例函数会被编译但不会被执行。

添加一个输出注释:

func Example() {
    junk.Poke()
    // Output: MOOOO!
}

9
显然,将输出和“:”之间留有空格也很重要。我在这里强调一下,以防其他人不小心添加了空格,浪费了一个小时来找出为什么程序无法运行。 - Buzzy
1
同样重要的是确保 // Output: 注释是最后一个注释。 - freb
你也可以在 // Output: 的注释行后面放置实际的输出。 - Eric
1
如果示例没有输出任何内容,则最后的 // Output: 也可以作为输出。 - TheDiveO
1
注意,没有分号是无法工作的。 - bart-kosmala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接