Насмешливый приватный статический метод в конечном (служебном) классе
Есть ли способ проверить следующий класс, издеваясь над закрытым методом getMessage()
?
Я пытался с jUnit + Mockito + PowerMock, но я не мог найти способ (без изменения исходного кода или внесения изменений отражения).
Любая идея?
public final class One {
public static String met1() {
return getMessage();
}
private static String getMessage() {
return "ciao";
}
private One() {
// Empty
}
}
1 ответ
PowerMockito позволит вам высмеивать все статические методы класса, но вы должны убедиться, что met1
Метод по-прежнему вызывает реальный метод:
@RunWith( PowerMockRunner.class )
@PrepareForTest( One.class )
public class OneTest
{
@Test
public void testOne()
{
PowerMockito.mockStatic( One.class );
try
{
PowerMockito.when( One.met1() ).thenCallRealMethod();
Method getMessage = PowerMockito.method( One.class, "getMessage" );
PowerMockito.when( getMessage.invoke( null ) ).thenReturn( "test" );
}
catch ( Exception e )
{
e.printStackTrace();
}
assertEquals( "test", One.met1() );
}
}