1

プライベート メソッドをモックして、次のクラスをテストする方法はありgetMessage()ますか?

jUnit + Mockito + PowerMock を試してみましたが、方法が見つかりませんでした (ソースコードを変更したり、リフレクションを変更したりせずに)。

何か案が ?

public final class One {
    public static String met1() {
        return getMessage();
    }
    private static String getMessage() {
        return "ciao";
    }
    private One() {
        // Empty
    }
}
4

1 に答える 1

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() );
  }
}
于 2014-03-04T11:23:40.083 に答える