4 回答

TA貢獻1995條經驗 獲得超2個贊
go test
在 Go 1.10 及更高版本中,會在包級別自動執行此操作;任何沒有更改的包將返回緩存的測試結果,而有更改的包將被重新測試。
如果單個包的測試仍然花費太長時間,則表明您的測試存在問題;Go 中的良好測試通常執行得非??欤@意味著您可能需要檢查測試本身,并執行以下操作的組合:
使用構建標簽隔離集成測試。訪問外部資源的測試往往會比較慢,因此將它們設置為可選將有助于加快您只需要單元測試結果的運行速度。
利用簡短的測試,以便您可以選擇更頻繁地進行快速通過。
檢查您的單元測試 - 您是否有不必要的測試或測試用例?您的測試是否過于復雜?您是否正在閱讀可以保存為常量的黃金文件?當您可以通過編程方式創建對象時,是否將靜態 JSON 反序列化為對象?
優化您的單元測試。測試仍然是代碼,性能不佳的代碼可以進行性能優化。在單元測試中有很多情況下,我們很樂意選擇便利而不是性能,但如果性能是一個問題,則必須重新考慮該選擇。
檢查您的測試執行 - 您是否使用了不可緩存的參數來
go test
阻止其緩存結果?您是否出于習慣而在不必要的情況下使用競爭檢測器、分析器或代碼覆蓋率報告?

TA貢獻1852條經驗 獲得超7個贊
不,Go 中沒有辦法做到這一點。您所能做的就是將代碼拆分為多個包并一次測試一個包
go test some/thing
而不是他們全部
go test ./...

TA貢獻1799條經驗 獲得超9個贊
他們的 README.md 中的示例是
export CMDLINE="go test"
export PKGS="./..." # IMPORTANT make sure packages are written SEPERATLY
nabaz test --cmdline $CMDLINE --pkgs $PKGS .

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
- 4 回答
- 0 關注
- 175 瀏覽
添加回答
舉報