2015-10-26 42 views
2

可测试的Go示例看起来很棒。如何运行Go示例,它没有输出注释?

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

上面,例如,等价于断言一个单元测试:

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

根据the golang blog,我们可以写不具有输出评论实例,但随后的go testgo test -run ExampleReverse命令只编译榜样,不要运行它:

如果我们去除输出commen那么整个示例函数就会被编译但不会被执行。没有输出注释的示例对于演示不能作为单元测试运行的代码很有用,例如访问网络的代码,同时保证至少编译该示例。

这样的例子的输出虽然不可测试,但仍然可以用于用户制作和阅读。而这些例子本身 - 在计算机上运行很有用。

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

回答

2

您可以从常规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 
+0

整洁! Upvoted。但是我仍然会等待一个答案,它可以运行您没有访问过的示例,并且/或者可以将它们“正确地”编译为单个可运行的二进制文件。 –