![](/img/trans.png)
[英]Mockito doReturn/when executes real method (without CGILIB)
[英]Mockito doReturn() executes the Real function instead of just return
我正在嘗試模擬 Class D 構造函數。 然而,模擬對象調用真正的 function 而不是僅僅返回值。
從底部閱讀。
主要的
public abstract class F
{
int hi()
{
throw new Exception("I always throw Exception. So don't execute me");
return 1;
}
}
public abstract class E extends F
{
int hi()
{
return super.hi();
}
}
public class D extends E
{
}
public class C
{
D d_object;
C()
{
d_object = new new D(); // will be mocked_d!
}
int hi()
{
d_object.hi();
}
}
public class B
{
void fun()
{
C object = new C();
int value = object.hi();
}`
}
測試
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringJunit4ClassRunner.class)
@PrepareForTest({C.class,D.class})
public class Test_B
{
@Autowired
A o_A;
@Test
public void test_method()
{
D mocked_D = mock(D.class);
PowerMockito.whenNew(D.class).withNoArguments().then(new Answer()
{
@Override
public Object answer(InvocationOnMock invocation) throws Throwable
{
return mocked_D;
}
});
PowerMockito.doReturn(2).when(mocked_d).hi();
Assert.assertEquals(2,o_A.fun()) // throws Exception. since method inside class F gets executed.
}
}
class F 中的 hi() 方法總是被調用,因此它會拋出執行。 我不想調用那個 function。 我做錯什么了嗎?
使用@PrepareForTest
時,我總是在測試中使用PowerMockito.mockStatic
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.