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

WBOY
Freigeben: 2024-02-08 23:39:20
nach vorne
373 Leute haben es durchsucht

如何将 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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!