Maison  >  Article  >  développement back-end  >  Comment comparer la valeur de couverture des tests des cas de test Golang avec un seuil spécifique

Comment comparer la valeur de couverture des tests des cas de test Golang avec un seuil spécifique

WBOY
WBOYavant
2024-02-08 23:39:20352parcourir

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

Dans cet article, l'éditeur php Banana vous présentera comment comparer la valeur de couverture des tests des cas de test Golang avec un seuil spécifique. Dans le développement de logiciels, la couverture des tests est une mesure importante, qui mesure dans quelle mesure les cas de test couvrent le code. En comparant la valeur de couverture des tests avec un seuil spécifique, nous pouvons juger de la qualité des cas de test et découvrir une couverture de test insuffisante dans le temps, améliorant ainsi la qualité et la stabilité du code. Dans cet article, nous expliquerons comment utiliser les outils de test et les outils de couverture de code de Golang pour calculer la couverture des tests et la comparer à un seuil spécifique. Que vous soyez débutant ou développeur expérimenté, cet article vous fournira des conseils pratiques et des méthodes pour vous aider à mieux gérer et évaluer la couverture des tests. Explorons ensemble !

Contenu de la question

Je souhaite obtenir la couverture du test et la comparer avec un seuil défini par l'utilisateur. J'ai essayé le code ci-dessous dans le makefile auquel j'ai fait référence à partir de ce lien. C'est écrit dans un fichier .yml, mais j'essaie de l'écrire dans un 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

Il n'imprime rien sur echo ${totaltestcoverage} et donne la réponse "ok" même si ma couverture totale de test est de 40.

Quelqu'un peut-il m'aider à trouver un meilleur moyen d'obtenir une couverture de test et de comparer avec les seuils définis par l'utilisateur ?

Merci d'avance.

Solution

Vous pouvez essayer ceci

.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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer