2014-10-08 122 views
2

我目前在我的Go測試腳本中寫入ExampleFuncs。例如:Go語言:使用軟件包範圍內的軟件包名稱(例如)

package hello 

import "testing" 

func ExampleGetSymbol() { 
    data := GetSymbol("AAPL") 
    fmt.Println(len(data.Data)) 
    // Output: 21 
} 

現在,這給了我兩個好處:

  1. 執行這個例子,當我func GetSymbol
下運行 go test
  • 看樣子godoc文檔中

    有一件事困擾我,我想知道是否有什麼我應該做的。 對於正試圖從這個例子學習的用戶,該行

    data := GetSymbol("AAPL") 
    

    實際上應該是

    data := hello.GetSymbol("AAPL") 
    

    ,但由於測試是在同一範圍內的包,我不能這樣使用它。

    所以我想我的問題的蒸餾版本將是:
    有沒有辦法允許package.field表示法的包範圍內?

    在此先感謝

  • 回答

    2

    而不是把這個包中hello,把它放在包hello_test。您可以將hellohello_test程序包都包含在同一個目錄中,並且允許(需要)您按照建議的方式創建示例。

    順便說一下,這也會導致您只將測試用例(至少對於此文件)寫入公共API。這通常是一件好事。但是,如果您需要寫入私人功能,則可以將測試拆分爲單獨的文件,其中一些在hello包中,一些在hello_test中。

    順便說一句,這個文件稍微埋藏。您可以在go cmd documentation的「Test packages」部分找到它。

    +0

    非常感謝,不知道package_test被允許。沒有看到它在測試文檔中提到。太棒了。 – DannyB 2014-10-08 23:46:27

    相關問題