假設(shè)我們有一個項(xiàng)目使用一些僅用于測試的第三方模塊(或庫,如果你愿意)(即。github.com/stretchr/testify)。所以我們最終會得到go.mod這樣的文件:module example.org/myappgo 1.13require ( ... github.com/go-resty/resty/v2 v2.2.0 github.com/gorilla/mux v1.7.4 github.com/stretchr/testify v1.3.0 ...)正如我所看到的,用于生產(chǎn)代碼的模塊和僅用于測試的 testify 之間沒有區(qū)別(即不像在 Java 中我們有依賴范圍test等compile)所以 golang 編譯器如何知道不需要哪個依賴對于運(yùn)行時并且可以在編譯的二進(jìn)制文件中省略?
1 回答

慕尼黑5688855
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個贊
它不僅包括您的所有內(nèi)容go.mod
;編譯器會忽略當(dāng)時正在構(gòu)建的內(nèi)容中未引用的任何內(nèi)容。默認(rèn)情況下,正確的測試文件被命名*_test.go
并被非測試構(gòu)建的構(gòu)建約束排除。僅從這些文件中引用的任何內(nèi)容都只會編譯到測試版本中。
- 1 回答
- 0 關(guān)注
- 142 瀏覽
添加回答
舉報
0/150
提交
取消