我想在Go中創建一個包,並將包的測試和示例作爲子目錄以保持工作空間清潔。這是可能的,如果是這樣的話?Golang在子目錄中的測試
所有文檔總是將測試代碼放在與其他代碼相同的地方,這是更好的方式還是公約?
謝謝。
我想在Go中創建一個包,並將包的測試和示例作爲子目錄以保持工作空間清潔。這是可能的,如果是這樣的話?Golang在子目錄中的測試
所有文檔總是將測試代碼放在與其他代碼相同的地方,這是更好的方式還是公約?
謝謝。
請注意,您可以運行go test
「遞歸」:你需要列出所有你想測試包。
如果你是你的圍棋項目的根文件夾,鍵入:
go test ./...
的 './...
' 符號在的 「command go
」 一節 「Description of package lists」 描述:
如果導入路徑包含一個或多個「
...
」通配符,則它們可以匹配任何字符串,包括空字符串和包含斜槓的字符串。這樣的模式擴展到
GOPATH
樹中找到的所有包目錄,其名稱與模式匹配。作爲一個特殊情況,
x/...
匹配x
以及x
的子目錄。
例如,net/...
擴展爲net
並打包在其子目錄中。
如果你把你_test.go
文件中的子文件夾,在「go test ./...
」命令就可以接他們回家。
但是:
也就是說,我仍然希望將_test.go
文件放在主源文件的旁邊:它更容易找到。
有些人可能會認爲不能訪問私人內容是正常的黑盒測試,而且更好。關於必須符合公共符號的條件,您可以隨時導入_「...」。 – ddevienne
將您的測試放在名爲file_test.go
的文件的同一目錄中,其中「file」是您正在測試的源代碼文件的名稱。這是慣例,我發現在我自己的經驗中它是最好的。
如果go test
工具還不是很夠自動爲你,你可能會考慮GoConvey,其中有一個網絡的用戶界面,會自動更新和運行傳統的圍棋測試以及GoConvey測試(這是基於行爲,並且比傳統的Go測試更加自我記錄)。
我通常不這樣做的測試,但你可以將你的文件到目錄和使用進口喜歡
import "./models"
如果是
import "../models
如果超出一個級別,並在
一個級別了一個級別例如,對於:
./models/todo.go
./test/todo_test.go
從測試, 您在todo_test.go
進口將
import "../models"
這種導入代碼的方法僅適用於暴露的函數。即使你認爲你明確地將它們放在同一個包中,它的行爲似乎也不像它們在同一個包中。所以這個解決方案並不能真正解決單元測試的問題。 –
請嘗試下面的github存儲庫。
https://github.com/appleboy/golang-testing
您也可以下載golang測試腳本。
$ curl -fsSL https://raw.githubusercontent.com/appleboy/golang-testing/master/coverage.sh /usr/local/bin/coverage
$ chmod +x /usr/local/bin/coverage
注意:'go test。/ ...'將在當前文件夾*和*所有子文件夾上運行測試。請參閱[我的答案](http://stackoverflow.com/a/21725603/6309) – VonC
[如何在我的項目中測試所有測試?](http://stackoverflow.com/問題/ 16353016/how-to-go-test-all-testings-in-my-project) –
我在想同樣的事情。因爲在同一級別上的導演有副目錄,所以在將測試分爲單獨的目錄方面有困難。 –