Używamy wtyczki SonarQube i JaCoco maven do wyodrębniania pomiarów testowych, takich jak pokrycie kodu.
Jednak uważam, że brakuje nam pomiarów i chciałbym znaleźć sposób na zmierzenie liczby testów na metodę publiczną.
Podstawą tego jest to, że zauważyłem, że jest całkiem możliwe uzyskanie 100% pokrycia metody, klasy i linii za pomocą jednego testu dla metody skróconej.
Testowana metoda
public Integer parseString(String value) {
return null;
}
Testuj
public void parseStringShouldReturnNullWhenNullIsProvided() {
Integer result = parseString(null);
Assert.assertNull(result);
}
Powyższy przykład daje 100% pokrycia, ale nie podaje żadnej wartości.
Ale gdybyśmy byli w stanie zmierzyć testy metodą publiczną, dałoby to wynik 1, co należy uznać za zły wynik. Dodając kolejny test dla tej metody, pomiar wzrósłby do 2 i nowy test zakończyłby się niepowodzeniem, ale pokrycie nadal wynosiłoby 100%
Czy ktoś zna narzędzie, które wyodrębnia tego rodzaju pomiary z aplikacji Java? Najlepiej coś, co można podłączyć do programu jako wtyczka.
1 odpowiedź
Pokrycie linii lub pokrycie metod nie pomaga w ocenie jakości testu i właśnie tego szukasz. Jakości testu nie można łatwo określić, patrząc na liczbę testów na metodę lub linie, ponieważ jest w dużej mierze zdeterminowana przez jakość potwierdzeń.
Istnieją narzędzia do wykonywania takich pomiarów. Wiele z nich przeprowadza testy mutacji, zmienia kod produkcyjny w pamięci i sprawdza, czy wystąpił błąd testu. Jeśli nie ma żadnego błędu testu, operacja, która została zmieniona, nie jest tak naprawdę testowana.
Z powodzeniem korzystałem już z pitest, ale pamiętaj, że ma to ogromny wpływ na czas wykonania testu, nawet z opcją historii włączony.
Podobne pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].