第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

使用 Go 語言進(jìn)行測試的正確包命名

使用 Go 語言進(jìn)行測試的正確包命名

Go
慕桂英546537 2021-07-05 17:51:27
我在 Go 中看到了幾種不同的測試包命名策略,想知道每種策略的優(yōu)缺點(diǎn)以及我應(yīng)該使用哪一種。策略一:文件名:github.com/user/myfunc.gopackage myfunc測試文件名:github.com/user/myfunc_test.gopackage myfunc策略二:文件名:github.com/user/myfunc.gopackage myfunc測試文件名:github.com/user/myfunc_test.gopackage myfunc_testimport (    "github.com/user/myfunc")策略三:文件名:github.com/user/myfunc.gopackage myfunc測試文件名:github.com/user/myfunc_test.gopackage myfunc_testimport (    . "myfunc")Go 標(biāo)準(zhǔn)庫似乎混合使用了策略 1 和 2。我應(yīng)該使用這三種中的哪一種?附加package *_test到我的測試包上很痛苦,因?yàn)檫@意味著我無法測試我的包私有方法,但也許有一個我不知道的隱藏優(yōu)勢?
查看完整描述

3 回答

?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個贊

您列出的三種策略之間的根本區(qū)別在于測試代碼是否與被測代碼在同一個包中。在使用的決定package myfuncpackage myfunc_test在測試文件取決于你是否要執(zhí)行白盒黑箱測試。

在項(xiàng)目中同時(shí)使用這兩種方法并沒有錯。例如,您可以擁有myfunc_whitebox_test.gomyfunx_blackbox_test.go。

測試代碼包比較

  • 黑盒測試:使用package myfunc_test,這將確保您只使用導(dǎo)出的標(biāo)識符。

  • 白盒測試:使用package myfunc以便您可以訪問非導(dǎo)出的標(biāo)識符。適用于需要訪問非導(dǎo)出變量、函數(shù)和方法的單元測試。

問題中列出的策略的比較

  • 策略 1:文件myfunc_test.go使用package myfunc- 在這種情況下, 中的測試代碼myfunc_test.go將與 中正在測試的代碼位于同一包中myfunc.gomyfunc在本例中。

  • 策略 2:文件myfunc_test.go使用package myfunc_test——在這種情況下,myfunc_test.go“將作為單獨(dú)的包編譯,然后與主測試二進(jìn)制文件鏈接并運(yùn)行”中的測試代碼。[來源:test.go源代碼中的第 58-59 行]

  • 策略 3:文件myfunc_test.go使用package myfunc_testmyfunc使用點(diǎn)表示法導(dǎo)入- 這是策略 2 的變體,但使用點(diǎn)表示法導(dǎo)入myfunc.


查看完整回答
反對 回復(fù) 2021-07-12
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個贊

這取決于您的測試范圍。高級測試(集成、驗(yàn)收等)可能應(yīng)該放在一個單獨(dú)的包中,以確保您通過導(dǎo)出的 API 使用該包。

如果您有一個包含大量內(nèi)部組件的大型包需要進(jìn)行測試,那么請使用相同的包進(jìn)行測試。但這并不是讓您的測試訪問任何私有狀態(tài)的邀請。這將使重構(gòu)成為一場噩夢。當(dāng)我在 go 中編寫結(jié)構(gòu)時(shí),我經(jīng)常實(shí)現(xiàn)接口。我從測試中調(diào)用的是那些接口方法,而不是所有的輔助方法/函數(shù)。


查看完整回答
反對 回復(fù) 2021-07-12
?
繁華開滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個贊

您應(yīng)該盡可能使用策略 1。您可以使用特殊的foo_test包名來避免導(dǎo)入循環(huán),但這主要是因?yàn)榭梢允褂孟嗤臋C(jī)制測試標(biāo)準(zhǔn)庫。例如,strings不能使用策略 1 進(jìn)行測試,因?yàn)?code>testing包依賴于strings. 正如您所說,使用策略 2 或 3,您無權(quán)訪問包的私有標(biāo)識符,因此除非必須,否則通常最好不要使用它。


查看完整回答
反對 回復(fù) 2021-07-12
  • 3 回答
  • 0 關(guān)注
  • 314 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號