W dużym uproszczeniu:
public class A {
public void jakasfunkcja(int a, int,b, Klasa oblicz, int b)
Masz tutaj dwa bledy. Jeden zwiazany ze zdublowanym przecinkiem a drugi ze zdublowana nazwa zmiennej. Ogolnie to mozesz te klase przerobic na cos w stylu:
public class A {
public void jakasfunkcja(int a, int b, Klasa oblicz, int c) {
if(oblicz.zwraca())
{
getOut().println("Zwróciło true");
}else
getOut().println("Zwróciło false");
}
protected PrintStream getOut() {
return System.out;
}
}
i pozniej w testach cos w stylu:
@Test
public void jezeliMetodaZwracaZwrociTrueToWypiszZwrociloTrueNaStandardoweWyjscie() {
/**
*
* Przygotowanie testu
*
*/
Klasa oblicz = mock(Klasa.class);
A a = spy(A.class);
PrintStream out = mock(PrintStream.class);
when(a.getOut())
.thenReturn(out);
when(oblicz.zwraca())
.thenReturn(true);
/**
*
* Wykonanie metody
*
*/
a.jakasfunkcja(
5, // jakas liczba
8, // jakas liczba
oblicz,
3); // jakas liczba
/**
*
* Sprawdzenie czy wszystko ok
*
*/
verify(oblicz).zwraca(); // czy metoda zwraca zostala w ogole wykonana?
verify(out).println("Zwróciło true"); // czy odpowiedni tekst zostal wypisany na standardowe wyjscie
}
@Test
public void jezeliMetodaZwracaZwrociFalseToWypiszZwrociloFalseNaStandardoweWyjscie() {
/**
*
* Przygotowanie testu
*
*/
Klasa oblicz = mock(Klasa.class);
A a = spy(A.class);
PrintStream out = mock(PrintStream.class);
when(a.getOut())
.thenReturn(out);
when(oblicz.zwraca())
.thenReturn(false);
/**
*
* Wykonanie metody
*
*/
a.jakasfunkcja(
5, // jakas liczba
8, // jakas liczba
oblicz,
3); // jakas liczba
/**
*
* Sprawdzenie czy wszystko ok
*
*/
verify(oblicz).zwraca(); // czy metoda zwraca zostala w ogole wykonana?
verify(out).println("Zwróciło false"); // czy odpowiedni tekst zostal wypisany na standardowe wyjscie
}
Mozesz tez to zrobic inaczej. Zamiast pisac metode getOut mozesz stworzyc sobie prywatne pole o nazwie np. out i pozniej wstawic mocka w to pole (mockito chyba tego nie potrafi wiec trzeba pewnie wykorzystac inne narzedzia). Metoda getOut powstala po to aby ominac problem z mockowaniem metod statycznych (mockito ma z tym problemy, ale juz PowerMock podobno daje rade). Potraktuj powyzszy kod jako pewny zarys - nie twierdze, ze nie da sie tego zrobic lepiej.