Zawsze używałem Jasmine do moich testów jednostkowych, ale ostatnio zacząłem używać Stambułu do generowania raportów pokrycia kodu. Chodzi mi o to, że rozumiem sedno tego, co próbują mi powiedzieć, ale tak naprawdę nie wiem, co reprezentuje każdy z tych wartości procentowych (Stmts, Branches, Funcs, Lines). Jak dotąd Googling nie mogłem znaleźć solidnego wyjaśnienia / źródła.
Pytanie : Tak jak powiedziałem, rozumiem sedno, ale czy ktoś może zamieścić odpowiednie wyjaśnienie lub link do właściwego wyjaśnienia?
Trzeciorzędne pytanie : czy istnieje sposób, aby określić, które konkretne części kodu nie są objęte? Jak dotąd bez naprawdę narzekania na ten raport, w zasadzie zgaduję.
-------------------|-----------|-----------|-----------|-----------|
File | % Stmts |% Branches | % Funcs | % Lines |
-------------------|-----------|-----------|-----------|-----------|
controllers/ | 88.1 | 77.78 | 78.57 | 88.1 |
dashboard.js | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
All files | 88.1 | 77.78 | 78.57 | 88.1 |
-------------------|-----------|-----------|-----------|-----------|
javascript
testing
jasmine
code-coverage
istanbul
Scott Sword
źródło
źródło
Odpowiedzi:
Istnieje kilka kryteriów pokrycia, z których najważniejsze to:
W każdym przypadku procent reprezentuje wykonany kod w porównaniu z kodem niewykonanym , co jest równe każdej części w formacie procentowym (np .: 50% oddziałów, 1/2).
W raporcie z pliku:
'E'
oznacza „inną ścieżkę niepobraną”, co oznacza, że w przypadku zaznaczonej instrukcji if / else przetestowano ścieżkę „if”, ale nie ścieżkę „else”.'I'
oznacza „jeśli ścieżka nie została zajęta”, co jest odwrotnym przypadkiem: „jeśli” nie zostało przetestowane.xN
lewej kolumnie jest liczba wykonanych linii.Zostało to zweryfikowane dla Istambułu v0.4.0, nie jestem pewien, czy to nadal dotyczy kolejnych wersji, ale ponieważ ta biblioteka jest oparta na solidnych zasadach teoretycznych, zachowanie nie powinno się zbytnio zmieniać w nowszych wersjach.
Zawiera również kody kolorów -
Różowy : informacje nie są uwzględnione.
Pomarańczowy : funkcje nie są objęte gwarancją.
Żółty : gałęzie nie zakryte.
Pełne dokumenty w Stambule tutaj:
https://istanbul.js.org
Aby uzyskać bardziej szczegółową teorię dotyczącą pokrycia kodu:
https://en.wikipedia.org/wiki/Code_coverage
Mam nadzieję, że to pomoże!
źródło
Uruchomiony Stambuł powinien również wygenerować plik HTML raportu (powinien znajdować się w folderze pokrycia). Ten kod HTML powinien zawierać szczegółowe informacje po kliknięciu plików / folderów.
Odsetek pokrytych funkcji jest obliczany przez liczbę funkcji, które zostały wywołane podczas testów, podzieloną przez całkowitą liczbę funkcji. To samo dotyczy wierszy i instrukcji (które zwykle będą blisko siebie, chyba że masz bardzo długie instrukcje). Gałęzie oznaczają punkty decyzyjne, takie jak
if-else
bloki. Na przykład, powiedzmy, że twój kod zawiera tylko jednąif-else
instrukcję, a twoje testy przechodzą tylko przezif
część, ale nie przezelse
część, wtedy procent twoich gałęzi powinien wynosić 50%.Mam nadzieję, że to wszystko wyjaśnia.
źródło
"test" : "nyc mocha"
wpackage.json
. Mój folder pokrycia jest pusty. Myśli?"test" : "nyc --reporter=html mocha"
Dodawanie do poprzednich odpowiedzi
Oświadczenia% oblicza się, biorąc procent z liczby stwierdzeń objętych testem, np. 12/18 * 100 = 66,67%. Oznacza to, że Twój test obejmował tylko 66,67%.
Oddział% jest również obliczany w ten sam sposób. To samo dotyczy funkcji% i linii%.
W katalogu głównym projektu znajduje się folder pokrycia, który zawiera dane wyjściowe HTML testu. Kliknij na nią i wyświetl ją w przeglądarce. Powinieneś zobaczyć coś takiego
Obraz przedstawiający wyniki Twoich testów
Mam nadzieję, że pomoże ci to lepiej to zrozumieć.
źródło