Heim >Backend-Entwicklung >Golang >So vergleichen Sie den Testabdeckungswert von Golang-Testfällen mit einem bestimmten Schwellenwert

So vergleichen Sie den Testabdeckungswert von Golang-Testfällen mit einem bestimmten Schwellenwert

WBOY
WBOYnach vorne
2024-02-08 23:39:20412Durchsuche

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

In diesem Artikel stellt Ihnen der PHP-Editor Banana vor, wie Sie den Testabdeckungswert von Golang-Testfällen mit einem bestimmten Schwellenwert vergleichen. In der Softwareentwicklung ist die Testabdeckung eine wichtige Kennzahl, die misst, wie gut Testfälle den Code abdecken. Durch den Vergleich des Testabdeckungswerts mit einem bestimmten Schwellenwert können wir die Qualität der Testfälle beurteilen und rechtzeitig eine unzureichende Testabdeckung erkennen, wodurch die Qualität und Stabilität des Codes verbessert wird. In diesem Artikel erklären wir, wie Sie mit den Testtools und Code-Coverage-Tools von Golang die Testabdeckung berechnen und mit einem bestimmten Schwellenwert vergleichen. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, erhalten Sie in diesem Artikel praktische Tipps und Methoden, mit denen Sie die Testabdeckung besser verwalten und bewerten können. Lasst uns gemeinsam erkunden!

Frageninhalt

Ich möchte die Testabdeckung erhalten und sie mit einem benutzerdefinierten Schwellenwert vergleichen. Ich habe den folgenden Code in dem Makefile ausprobiert, auf das ich über diesen Link verwiesen habe. Es ist in einer .yml-Datei geschrieben, aber ich versuche, es in ein Makefile zu schreiben.

.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

Es druckt nichts auf echo ${totaltestcoverage} und gibt die Antwort „ok“, obwohl meine Gesamttestabdeckung 40 beträgt.

Kann mir jemand helfen, einen besseren Weg zu finden, um eine Testabdeckung zu erhalten und sie mit benutzerdefinierten Schwellenwerten zu vergleichen?

Vielen Dank im Voraus.

Lösung

Sie können es versuchen

.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

Das obige ist der detaillierte Inhalt vonSo vergleichen Sie den Testabdeckungswert von Golang-Testfällen mit einem bestimmten Schwellenwert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen