Czy komuś udało się wygenerować pokrycie kodu dla testów jednostkowych Go? Nie mogę znaleźć odpowiedniego narzędzia w sieci.
źródło
Czy komuś udało się wygenerować pokrycie kodu dla testów jednostkowych Go? Nie mogę znaleźć odpowiedniego narzędzia w sieci.
Zwróć uwagę, że Go 1.2 (Q4 2013, rc1 jest dostępne) wyświetli teraz wyniki pokrycia testowego :
Jedną z głównych nowych funkcji programu
go test
jest to, że może teraz obliczać i, z pomocą nowego, oddzielnie zainstalowanegogo tool cover
programu, " " wyświetlać wyniki pokrycia testów .
cover
Narzędzie jest częściągo.tools
subrepository . Można go zainstalować, uruchamiając
$ go get golang.org/x/tools/cmd/cover
Narzędzie do okładek ma dwie rzeczy.
- Po pierwsze, kiedy „
go test
” otrzyma-cover
flagę, jest uruchamiane automatycznie w celu przepisania źródła pakietu i wstawienia instrukcji instrumentacji. Następnie test jest kompilowany i uruchamiany w zwykły sposób oraz raportowane są podstawowe statystyki pokrycia:
$ go test -coverprofile fmtcoverage.html fmt
ok fmt 0.060s coverage: 91.4% of statements
$
Po drugie, w celu uzyskania bardziej szczegółowych raportów, różne flagi do „testu przejścia” mogą tworzyć plik profilu pokrycia, który program pokrycia, wywoływany za pomocą „
go tool cover
”, może następnie przeanalizować.
Najnowsze wersje Go (2013/09/19) wykorzystują:
go test -coverprofile <filename> <package name>
Szczegółowe informacje na temat generowania i analizowania statystyk pokrycia można znaleźć, uruchamiając polecenia
$ go help testflag
$ go tool cover -help
Ivan Black w komentarzach wspomina :
go test -coverprofile cover.out
a następnie
go tool cover -html=cover.out
otwiera sięcover.out
w domyślnej przeglądarce
Nie chcę nawet czekać na otwarcie przeglądarki, więc zdefiniowałem ten alias:
alias gc=grep -v -e " 1$" cover.out
Że po prostu piszę gc
i mam listę wszystkich linii, które jeszcze nie zostały omówione (tutaj: z coverage.out
linią nie kończącą się na „ 1
”).
go test -coverprofile <filename> <package name>
go test -coverprofile cover.out
a następniego tool cover -html=cover.out -o cover.html
otwórzcover.html
w przeglądarcego tool cover -html=cover.out
automatycznie otworzy przeglądarkę, ale nie działa w moim systemie. Wolę mieć otwartą przeglądarkę i w razie potrzeby odświeżyć stronę.Go zawiera niesamowite narzędzie do testowania i pokrycia. Chociaż wszystkie narzędzia Go są dobrze udokumentowane
go tool cover -help
, proponuję przeczytać artykuł z okładki na oficjalnym blogu Go . Ma mnóstwo przykładów i gorąco go polecam!Mam tę funkcję w moim ~ / .bash_profile. (możesz po prostu wkleić go do terminala, aby spróbować).
Następnie po prostu
cd
do folderu projektu / pakietu go i wpiszcover
. Otwiera to wizualne narzędzie w przeglądarce, które pokazuje przetestowany i nieprzetestowany kod dla każdego pliku w bieżącym pakiecie. Bardzo przydatne polecenie! Zdecydowanie polecam do znalezienia czegoś, co nie jest jeszcze w 100% przetestowane! Wyświetlane wyniki są według pliku. Z listy rozwijanej w lewym górnym rogu możesz zobaczyć wyniki dla wszystkich plików.Za pomocą tego polecenia możesz również sprawdzić pokrycie dowolnego pakietu, na przykład:
cover fmt
Dane wyjściowe w terminalu z tego polecenia byłyby:
Oprócz tego w przeglądarce zobaczysz to narzędzie pokazujące na czerwono wszystkie linie kodu, które nie są objęte testami:
Możliwe jest również zapisanie pliku pokrycia html zamiast otwierania go w przeglądarce. Jest to bardzo przydatne w przypadkach, gdy testy + pokrycie są uruchamiane przez narzędzie CI, takie jak Jenkins. W ten sposób możesz obsługiwać pliki pokrycia z centralnego serwera, a cały zespół będzie mógł zobaczyć wyniki pokrycia dla każdej kompilacji.
źródło
Oprócz dobrych odpowiedzi powyżej, uważam, że te trzy wiersze są najprostszym sposobem na uzyskanie tego (co obejmuje wszystkie pakiety):
Zwróć uwagę, że w pliku HTML znajduje się przycisk rozwijany, który przekieruje Cię do wszystkich plików.
źródło
To prawda tutaj , niektóre docs tutaj .
Nie użyłem tego, to wszystko, co wiem.
źródło
~/go/pkg/tool/linux_amd64
meczach mojej ostatniej wczorajszej kompilacji Go.Jeśli chcesz zobaczyć odsłonięte linie według funkcji bezpośrednio w terminalu, przepisałem w tym celu narzędzie okładki. Jest dostępny pod adresem https://github.com/gregoryv/uncover .
Stosowanie
Zrzut ekranu
źródło
Jeśli używasz VSCode, ta funkcja jest obsługiwana po wyjęciu z pudełka ( ale domyślnie wyłączona )
Po prostu włącz test na zapisywanie + raportowanie pokrycia
https://github.com/microsoft/vscode-go/wiki/On-Save-features
Pokaże nawet w twoim edytorze, które linie nie są zakryte, co jest bardzo przydatne.
źródło
Raport pokrycia →
a) Uruchom wszystkie testy i włącz pokrycie ->
go test ./... -coverprofile coverage.out
b) Uzyskaj zasięg dla poszczególnych funkcji, a także ogólny zasięg →
go tool cover -func coverage.out
c) Zobacz omówione linie i te, które nie zostały objęte testami →
go tool cover -html=cover.out -o coverage.html
. Otwórzcoverage.html
wygenerowany plik w przeglądarce i przeanalizuj szczegółowe informacje o zasięgu.źródło
Szybkim i łatwym sposobem jest użycie narzędzia pokrycia, które jest dostarczane z wbudowanym go:
Po wykonaniu powyższego polecenia, jeśli chcesz wizualnie zobaczyć pokrycie kodu (takie jak pokryte instrukcje i pominięte itp.)
Uwaga: powyższe polecenia musisz wykonać w folderze, w którym chcesz zobaczyć pokrycie
źródło
Zainspirowany menu pomocy i innymi odpowiedziami na to pytanie, po prostu uruchom:
źródło
Spróbuj użyć obrazu platformy Docker gaia-docker / base-go-build .
To jest obraz Dockera, który zawiera wszystko, czego potrzebujesz do tworzenia i testowania pokrycia. Uruchomienie pokrycia testowego w kontenerze Docker tworzy folder .cover z wynikami pokrycia testowego projektu.
Skrypt pokrycia Test działa na wszystkich projektów foldery i generuje wewnątrz .Chronić folderu JUnit i zakres raportów dla każdego folderu i połączyć raport pokrycia wszystkich projektów testów.
Codecov sugeruje również skrypt, który zbiera wyniki pokrycia: wiele plików
źródło
go get github.com/axw/gocov/gocov go get -u gopkg.in/matm/v1/gocov-html
Sprawdź, czy jest poprawnie zainstalowany. Masz dostęp ze swojego terminala
Jeśli uruchomisz przypadek testowy, poprawi on plik .json Na podstawie pliku otrzymasz Raport pokrycia kodu w pliku .html
gocov test >your_Coverage_report.json
Po zakończeniu testu wygeneruj raport w pliku .html za pomocą .json
gocov-html your_Coverage_report.json >your_Coverage_report.html
Odniesienie
Narzędzie pokrycia GoTest dla go lang
Narzędzie do raportowania testów Go
Przejdź do testu natywnego
źródło