Plugins to code coverage; eclipse

0

hej!
wiecie może który plugin pozwala pokryć kod testami ale tylko metody powyżej któregoś poziomu złożoności?

z góry dzięki !

0

Chcesz selektywnie testować coverage tylko dla metod które są odpowiednio złożone? Nie słyszałem o takim, zresztą dobrze napisane metody powinny mieć <20 linijek i być absolutnie niezłożone. Jeśli masz bardziej złożone to są złe i musisz je zrefaktorować.

0

Niektórych metod nie da się rozłożyć. pewne składowe jak ify, fory itd same podbijają złożoność. Chciałabym uzyskać pomiar złożoności kodu (np.80%). Żeby jednak pokrycie było sensowne należy badać złożność powyżej pewnej złożności. Bez sensu jest przecież testowanie getterów i setterów.

1

@K4sia każdą metodę da się rozłożyć. Zapewniam cię. Szczególnie że jeśli w metodzie masz ifa to powinnaś tą metodę podzielić przynajmniej na 2.
if warunek
metoda1()
else
metoda2()
Bo to oznacza że dana metoda robi więcej niż 1 rzecz.
Czy testowanie geterów/seterów jest bez sensu? Nie do końca. Szczególnie jeśli ktoś przerobi geter tak że robi coś więcej niż tylko zwraca wartość, albo seter tak że robi coś więcej niż tylko ustawia wartość pola (np. dodatkowo coś wylicza). Zresztą test do geterów/seterów można od biedy zrobić jeden, poustawiać pola i pobrać ich wartości do asercji i już. Minuta roboty dla kazdej klasy.

1
Shalom napisał(a):

Szczególnie że jeśli w metodzie masz ifa to powinnaś tą metodę podzielić przynajmniej na 2.

Zawsze, bezwarunkowo?

public void metoda(Long id) {
    JakasKlasa jk;
    if (id == null) {
        jk = idNull();
    else {
        jk = idNotNull(id);
    }
    ...
}

private JakasKlasa idNull() {
    return SENTINEL;
}

private JakasKlasa idNotNull(long id) {
    return dao.get(id);
}

wydaje mi sie przesada, gdy mozna napisac tak:

public void metoda(Long id) {
    JakasKlasa jk = id == null ? SENTINEL : dao.get(id);
    ...
}

No ale ja mam wlasna definicje co seksowne a co nie, Twoje jest pewnie inna. Ja lubie krotki, zwiezly kod.

1

No dobra, to jest skrajny przypadek kiedy nie ma sensu tak robić, bo zawartość if'a zajmuje tyle samo linijek co wywołanie funkcji, więc taka zmiana nic nie wnosi tylko komplikuje kod. Zauważ że autorka pisze jednak o trochę bardziej złożonych kawałkach kodu ;)

0

Już znalazłam odpowiedź. W Sonarze można stworzyć filtr, który będzie mierzył pokrycie kodu tylko powyzej pewnej złożoności. Można ustawić naturalnie złożonosć klas, metod itd, jak i czy złożoność ma być większa, mniejsza czy równa od podanego progu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1