亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不包含測試模塊的構建

不包含測試模塊的構建

Go
米琪卡哇伊 2022-08-01 17:33:32
我的項目具有以下結構:├── api│   ├── api.go│   ├── api_test.go│   ├── other_files...├── cmd│   └── main.go在cmd/main.go下,我有我的Go項目的入口點。由于我還在創建一些測試文件,因此我還有其他用于測試目的的類。My go.mod 是這樣的:require (    github.com/gorilla/mux v1.8.0    github.com/stretchr/testify v1.6.1          <-used for test    gotest.tools v2.2.0+incompatible            <-used for test     k8s.io/api v0.19.0    k8s.io/apimachinery v0.19.0    k8s.io/client-go v0.19.0)我的疑問與構建階段有關:在執行此操作時,我是否只選擇代碼中使用的正確模塊及其所有引用,不包括用于測試類中列出的未使用模塊?go build ./cmd/main.gomain.gogo.mod是否有任何命令可以確保我只鏈接所需的模塊?我假設Go已經優化了這樣做,但我想確定這一點。ldd
查看完整描述

2 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

當 go 正常構建軟件包時(或),它將忽略任何具有名稱模式的文件。這意味著僅從這些測試文件導入的任何包的目標代碼都不會鏈接到可執行文件中。go buildgo install*_test.go

因此,如果您只是小心不要從非測試代碼中導入測試包,那么您就很好。

如果您不確定,可以通過運行以下命令來檢查“構建列表”:

go list -m all

從模塊的根目錄開始。這將列出為生成提供包的模塊集。


查看完整回答
反對 回復 2022-08-01
?
夢里花落0921

TA貢獻1772條經驗 獲得超6個贊

當您運行 時,它將:go build

  • 檢查正在構建的包中的語句import

  • 檢查每個導入的包中的語句import

  • ...依此類推,直到它找到所有傳遞依賴項。

  • 然后,對于要生成的每個包,它會檢查生成約束,并生成未排除的文件。 默認情況下,文件是排除的,在生成測試時顯式包含它們。*_test.gogo test

這意味著:

  • 測試文件不會包含在非測試版本中,除非您顯式包含它們。

  • 完全不會包含未引用的包。

  • 其中的內容與生成無關:它僅用于依賴項管理,而不是編譯。go.mod


查看完整回答
反對 回復 2022-08-01
  • 2 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號