2015-10-26 40 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。但是我仍然會等待一個答案,它可以運行您沒有訪問過的示例,並且/或者可以將它們「正確地」編譯爲單個可運行的二進制文件。 –