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

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

僅運行受最近更改影響的測試

僅運行受最近更改影響的測試

Go
回首憶惘然 2023-08-07 10:37:59
有沒有辦法只執行那些受 Go 最近更改影響的測試?我們有一個大型單元測試套件,現在開始需要一段時間才能完成。我們認為我們只運行那些受第一遍代碼更改影響的測試。Python有這樣的東西: https: //github.com/tarpas/pytest-testmonGo 有辦法做到這一點嗎?
查看完整描述

4 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

go test在 Go 1.10 及更高版本中,會在包級別自動執行此操作;任何沒有更改的包將返回緩存的測試結果,而有更改的包將被重新測試。

如果單個包的測試仍然花費太長時間,則表明您的測試存在問題;Go 中的良好測試通常執行得非??欤@意味著您可能需要檢查測試本身,并執行以下操作的組合:

  • 使用構建標簽隔離集成測試。訪問外部資源的測試往往會比較慢,因此將它們設置為可選將有助于加快您只需要單元測試結果的運行速度。

  • 利用簡短的測試,以便您可以選擇更頻繁地進行快速通過。

  • 檢查您的單元測試 - 您是否有不必要的測試或測試用例?您的測試是否過于復雜?您是否正在閱讀可以保存為常量的黃金文件?當您可以通過編程方式創建對象時,是否將靜態 JSON 反序列化為對象?

  • 優化您的單元測試。測試仍然是代碼,性能不佳的代碼可以進行性能優化。在單元測試中有很多情況下,我們很樂意選擇便利而不是性能,但如果性能是一個問題,則必須重新考慮該選擇。

  • 檢查您的測試執行 - 您是否使用了不可緩存的參數來go test阻止其緩存結果?您是否出于習慣而在不必要的情況下使用競爭檢測器、分析器或代碼覆蓋率報告?


查看完整回答
反對 回復 2023-08-07
?
慕姐4208626

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

不,Go 中沒有辦法做到這一點。您所能做的就是將代碼拆分為多個包并一次測試一個包

go test some/thing

而不是他們全部

go test ./...


查看完整回答
反對 回復 2023-08-07
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

他們的 README.md 中的示例是

export CMDLINE="go test"

export PKGS="./..." # IMPORTANT make sure packages are written SEPERATLY

nabaz test --cmdline $CMDLINE --pkgs $PKGS .


查看完整回答
反對 回復 2023-08-07
?
慕的地6264312

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

你可以使用make. 如果測試文件沒有更改,它不會再次重新運行測試。


make: `test' is up to date.


這就是您可以編寫Makefile 的方法。


# To run commands just use "make" and make function name

# ex- <make run> use for run go run main.go

# Go parameters

execution: echo "** Executing Makefile**"

GOCMD=go


GOINSTALL=$(GOCMD) install

GOBUILD=$(GOCMD) build

GOCLEAN=$(GOCMD) clean

GOTEST=$(GOCMD) test

GOGET=$(GOCMD) get

GORUN=$(GOCMD) run

BINARY_NAME=reservations

BINARY_UNIX=$(BINARY_NAME)_unix


execute:

    - echo "Running the build - reservations"

    - ~/go/bin/reservations-backend


install:

    - echo "Building the module"

    # will create a executable file at $GOPATH

    - $(GOINSTALL)


run:

    - @echo "Running the application - reservations"

    - $(GORUN) $(BINARY_NAME)


#NOTE: @ before a command will stop showing that command.

test:

    - @echo "** Running Tests **"

    - $(GOTEST) -race ./test -v


查看完整回答
反對 回復 2023-08-07
  • 4 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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