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



可测试的Go示例看起来很棒。

func ExampleReverse() {
    fmt.Println(stringutil.Reverse("hello"))
    // Output: olleh
}
例如,上面的

相当于断言:

的单元测试:
stringutil.Reverse("hello") == "olleh"

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

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

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

那么是否有一种方法或工具可以在*_test中运行示例函数?从终端下载文件?

可以从普通的Test*函数调用Example*函数

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

最新更新