如何运行Go示例,没有输出注释?

时间:2015-10-26 19:30:05

标签: testing go

Testable Go示例看起来很棒。

func ExampleReverse() {
    fmt.Println(stringutil.Reverse("hello"))
    // Output: olleh
}

例如,上述内容相当于断言的单元测试:

stringutil.Reverse("hello") == "olleh"

根据the golang blog,我们可以编写没有输出注释的示例,但是go testgo test -run ExampleReverse命令只能编译示例并且不要运行它:

  

如果我们完全删除输出注释,则编译示例函数但不执行。没有输出注释的示例可用于演示无法作为单元测试运行的代码,例如访问网络的代码,同时保证示例至少编译。

这些示例的输出虽然不可测试,但对于用户生成和阅读仍然有用。示例本身 - 在计算机上运行很有用。

那么有没有一种方法或工具可以在终端的* _test.go文件中运行示例函数?

1 个答案:

答案 0 :(得分:3)

您可以通过常规Example*功能调用Test*个功能。

func ExampleOutput() {
    fmt.Println("HEELLO")
}

func TestExampleOutput(t *testing.T) {
    if !testing.Verbose() {
        return
    }
    ExampleOutput()
}

此示例的此主体将显示在文档中的Output下,如果您不希望每次都输出,则仅限于使用-v标志调用它。

具体来说,要运行您感兴趣的示例,您可以:

go test path/to/pkg -run TestExampleOutput -v

或者编译一次并多次运行:

go test path/to/pkg -c
./pkg.test -test.run TestExampleOutput -test.v