首頁 >後端開發 >Golang >如何將 Golang 測試用例的測試覆蓋率值與特定閾值進行比較

如何將 Golang 測試用例的測試覆蓋率值與特定閾值進行比較

WBOY
WBOY轉載
2024-02-08 23:39:20421瀏覽

如何将 Golang 测试用例的测试覆盖率值与特定阈值进行比较

php小編香蕉在這篇文章中將向大家介紹如何將 Golang 測試案例的測試覆蓋率值與特定閾值進行比較。在軟體開發中,測試覆蓋率是一個重要的指標,它衡量了測試案例對程式碼的覆蓋率。透過比較測試覆蓋率值與特定閾值,我們可以判斷測試案例的質量,並及時發現測試覆蓋不足的部分,從而提高程式碼的品質和穩定性。在本文中,我們將介紹如何使用 Golang 的測試工具和程式碼覆蓋率工具來計算測試覆蓋率,並將其與特定閾值進行比較。無論你是初學者還是有一定經驗的開發者,本文都將為你提供實用的技巧和方法,幫助你更好地進行測試覆蓋率的管理和評估。讓我們一起來探索吧!

問題內容

我想取得測試覆蓋率並與使用者定義的閾值進行比較。我在 makefile 中嘗試了下面的程式碼,我引用了這個連結。它是寫在 .yml 檔案中的,但我試圖將它寫在 makefile 中。

.PHONY: lint    
testcoverage=$(go tool cover -func coverage.out | grep total | grep -Eo '[0-9]+\.[0-9]+')
echo ${testcoverage}
if (${testcoverage} -lt 50 ); then \
  echo "Please add more unit tests or adjust threshold to a lower value."; \
  echo "Failed"
  exit 1
else \
  echo "OK"; \
fi

它不會在 echo ${totaltestcoverage} 上列印任何內容,並給出答案“ok”,即使我的 totaltestcoverage 是 40。

任何人都可以幫助我找到更好的方法來獲得測試覆蓋率並與用戶定義的閾值進行比較嗎?

提前致謝。

解決方法

你可以試試這個

.PHONY: lint

testcoverage := $(shell go tool cover -func=coverage.out | grep total | grep -Eo '[0-9]+\.[0-9]+')
threshold = 50

test:
    @go test -coverprofile=coverage.out -covermode=count  ./...

check-coverage:
    @echo "Test coverage: $(testcoverage)"
    @echo "Test Threshold: $(threshold)"
    @echo "-----------------------"

    @if [ "$(shell echo "$(testcoverage) < $(threshold)" | bc -l)" -eq 1 ]; then \
        echo "Please add more unit tests or adjust the threshold to a lower value."; \
        echo "Failed"; \
        exit 1; \
    else \
        echo "OK"; \
    fi

以上是如何將 Golang 測試用例的測試覆蓋率值與特定閾值進行比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除