PowerMock to framework rozszerzający biblioteki takie jak: EasyMock i Mockito. Odsyłam do oficjalnej strony w celu zapoznania się na co konkretnie pozwala PowerMock. Ja używam go wraz z Mockito i nie miałem do tej pory żadnych problemów. Poniżej prosty przykład użycia.
Klasa do testów:
public class SomeClass {
private Integer privateField;
private boolean privateMethod(String s, int i){
return false;
}
}
Klasa testująca:import static org.powermock.reflect.Whitebox.getField;
import static org.powermock.reflect.Whitebox.invokeMethod;
import java.lang.reflect.Field;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
public class SomeClassTest {
@Test
public void shouldTestPrivateMethod() throws Exception {
//given
SomeClass someClass = new SomeClass();
//when
boolean test = invokeMethod(someClass,"privateMethod", "Test", 1);
//then
}
@Test
public void shouldTestPrivateField() throws IllegalArgumentException, IllegalAccessException {
//given
SomeClass someClass = new SomeClass();
//when
Field field = getField(SomeClass.class, "privateField");
Integer testInteger = (Integer) field.get(someClass);
//then
}
}
WhiteBox oferuje jak wspomniałem o wiele więcej i warto się z tą funkcjonalnością zaznajomić.
Interesujący kod - fajna idea, prosta, a ułatwiająca życie.
OdpowiedzUsuńNo, ciekawa alternatywa..
OdpowiedzUsuńHaha dobre rozwiazanie :)
OdpowiedzUsuńDla zainteresowanych tematem polecam:
OdpowiedzUsuńhttp://www.javaranch.com/unit-testing.jsp