テストしたいクラス
public class SomeClass
{
private InternalClass internalClass;
void SomeMethod()
{
internalClass.InternalMethod();
}
}
SomeClassの内部で作られるクラス
public class InternalClass
{
// SomeClass#SomeMethod()の中で呼ばれるMock化したいメソッド
public void InternalMethod()
{
// do something
}
}
テストコード
@RunWith(PowerMockRunner.class)
@PrepareForTest(SomeClass.class)
public class SomeClassUTest
{
@Mock
InternalClass internalClass;
@Before
void setUp()
{
doNothing().when(internalClass).internalMethod(any());
PowerMockito
.whenNew(InternalClass.class)
.withAnyArguments()
.thenReturn(internalClass);
}
@Test
public void testSomeClass()
{
someClass = new SomeClass();
someClass.SomeMethod();
}
}