簡體   English   中英

Mockito doReturn() 執行真正的 function 而不是僅僅返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM