[英]Mocking an Object's method calls by EasyMock after injecting it using PowerMock
我在我的項目中有一個以下類,我正在嘗試編寫一個測試用例
Class A{
a(){
B b = new B();
int ans = b.somefunction();
}
}
我需要在上面的類中為我的測試模擬somefunction()調用
我試過以下來實現這一點
@RunWith(PowerMockRunner.class)
@PrepareForTest({A.class,B.class})
Class TestA{
testa(){
EasyMock mb = EasyMock.createMock(B.class);
PowerMock.createMock(B.class);
PowerMock.expectNew(B.class).andReturn(mb);
EasyMock.expect(mb.somefunction()).andReturn(0);
EasyMock.replay(mb);
PowerMock.replay(B.class);
}
}
但它總是給出Java.lang.AssertionError:意外的方法調用B.somefunction()
我的包中有PowerMock 1.5.5和EasyMock 3.2
有人可以幫助我解決上述問題,並幫助我弄清楚我到底出錯了什么地方。 我是使用EasyMock和PowerMock的新手。
是否存在測試給定類的更簡單方法。
您沒有正確執行測試用例,不需要測試類中的構造函數
正確的方法是這樣做:
@RunWith(PowerMockRunner.class)
@PrepareForTest({A.class,B.class})
class TestA{
B mb=EasyMock.createNiceMock(B.class);
PowerMock.expectNew(B.class).andReturn(mb).anyTimes();
EasyMock.expect(mb.somefunction()).andReturn(0).anyTimes();
EasyMock.replay(mb);
PowerMock.replayAll();
A a=new A(); //calling A's Constructor so that test case actually runs
}
希望這可以幫助!
祝好運
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.