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