2017-11-18 144 views
2

我導入了一個軟件包「gopkg.in/yaml.v2」。 這是根據目錄結構Go單元測試運行從「go get」命令導入的軟件包

src/ 
    gopkg.in/ 
    yaml.v2 
    main.go 
    abc.go 
    abc_test.go 

當我在編譯時間運行命令go test -v ./...從進口包gopkg.in/yaml.v2其運行單元測試爲好。在我的情況下不需要。

我是Go和它的測試框架的新手。在谷歌搜索的答案,但無法找到任何具體的東西?

回答

4

go工具會運行所有軟件包的測試,因爲您會指示它。

3個點...是go工具的一個功能,它表示給定的包和在其子文件夾中找到的所有包。從Command Go: Description of package lists:

的導入路徑中的DOC引用是一個模式,如果它包括一個或多個「...」通配符,其中的每一個可以匹配任何字符串,包括空字符串和含有斜線的字符串。這樣的模式擴展到名稱與模式匹配的GOPATH樹中的所有包目錄。

爲了使通用模式更方便,有兩種特殊情況。首先,模式末尾的/ ...可以匹配一個空字符串,以便net/...匹配其子目錄中的net和包,如net/http。其次,任何包含通配符的斜線分隔的pattern元素都不會參與在自營商品包路徑中的「vendor」元素的匹配,因此./ ...不匹配./vendor或./子目錄中的包。 mycode/vendor,但./vendor/...和./mycode/vendor/...做。但是,請注意,名爲供應商的名稱本身包含代碼的目錄不是自定義的軟件包:cmd/vendor將是名爲vendor的命令,並且模式cmd/...與它匹配。請參閱golang.org/s/go15vendor以獲取更多關於銷售的信息。

如果你只是想運行你自己的軟件包的測試,不要附加...它。導航到您的軟件包,然後運行go test .。或者從任何文件夾運行go test your/package

當然要能夠做到這一點(並且無論如何推薦),您應該將代碼放入包中,而不是直接放入$GOPATH/src文件夾中。例如。把它放到文件夾$GOPATH/src/my/example。然後你可以像go test my/example那樣測試它。