使用go test- 有沒有辦法在不提供相對路徑的情況下對當前專案中的包運行測驗?
go test fmt例如,無論我當前的作業目錄如何,我都可以運行,并go會四處尋找fmt包并開始運行其測驗。這是go test包串列模式。
但是,我無法弄清楚如何go test在當前專案中運行包。
例如- 鑒于此檔案夾結構:
mySpecialProject
|--foo
|--bar
|--bizz
|--buzz
我已經知道我可以運行go test ./bar/bizz來運行bizz包中的測驗;我知道go test -run用于運行特定命名的測驗;我還知道go test ./...要對當前目錄中的所有包運行所有測驗。這不是我在這里要求的。我希望在不提供相對路徑的情況下從專案的根目錄為單個包運行測驗。
閱讀的檔案約go test有關的軟體包串列模式下,“感覺”像它應該作業運行go test bizz或類似的東西,而不用為相對路徑運行BIZZ測驗。
但是,當我運行該命令時,它只是說 package bizz is not in GOROOT (/usr/local/Cellar/go/1.17.1/libexec/src/bizz)
有任何想法嗎?我已經找到了一個解決方法 ( find . -type d -name "bizz" | xargs go test),但我更愿意使用 go test 中內置的東西。
uj5u.com熱心網友回復:
我相當肯定這是不可能的。go test呼叫PackagesAndErrors函式來處理引數。
單步執行代碼,我看不到您想要本地作業的任何方式go test。您正在使用的外殼技巧似乎是做您想做的事情的最佳方式。
由于可能有另一種解決您的問題的方法,您能描述一下您為什么想要這種特定行為嗎?
uj5u.com熱心網友回復:
您應該能夠執行go test ./**/bizz. 這是一個名為 globstar 的 shell 功能,因此根據您的 shell,這可能對您有用。您可能需要先使用set -o globstar或啟用shopt -o globstar。
編輯:
go test ./.../bizz也有效,在這種情況下,它是一個 go 功能。唯一的區別是此命令不起作用 bizz 是當前作業目錄的直接子目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/347812.html
上一篇:go-如何對go中的時間物件進行“大于或等于”操作?
下一篇:golang快速替代memcpy
