テストしたいクラス
public class MyClass
{
private InternalClass internalClass;
void SomeMethod()
{
internalClass.InternalMethod();
}
}
MyClassの内部で作られるクラス
public class InternalClass
{
// MyClass#SomeMethod()の中で呼ばれるMock化したいメソッド
public void InternalMethod()
{
// do something
}
}
テストコード
public class MyClassUTest
{
@Spy
InternalClass mockInternalClass = new InternalClass();
MyClass MyClass;
@Before
void setUp()
{
myClass = new MyClass();
doNothing().when(internalClass).internalMethod(any());
Whitebox.setInternalState(myClass, "internalClass", mockInternalClass);
}
@Test
public void testMyClass()
{
myClass.SomeMethod();
}
}