Java 使用PowerMockito为类的所有实例模拟方法
我试图模拟一个方法,不管调用这个方法的实例是什么。据我所知,这在Mockito上是不可能发生的,应该用PowerMockito来完成,但我不知道应该怎么做。 我有Java 使用PowerMockito为类的所有实例模拟方法,java,unit-testing,mockito,powermockito,Java,Unit Testing,Mockito,Powermockito,我试图模拟一个方法,不管调用这个方法的实例是什么。据我所知,这在Mockito上是不可能发生的,应该用PowerMockito来完成,但我不知道应该怎么做。 我有 公共B类{ 公共void veryAnnoyingMethod(int i,short s){} } 公共A类{ public void veryImportantMethod(){ B newB=新的B(); newB.veryAnnoyingMethod(i,s); ... } } 我正在尝试测试veryImportantMet
公共B类{
公共void veryAnnoyingMethod(int i,short s){}
}
公共A类{
public void veryImportantMethod(){
B newB=新的B();
newB.veryAnnoyingMethod(i,s);
...
}
}
我正在尝试测试veryImportantMethod()
,并想模拟veryAnnoyingMethod()
。
我不想像这里解释的那样模拟构造函数:因为除了veryAnnoyingMethod()
之外,我还需要newB
完全起作用
我想出了一些类似于:
B dummyB=PowerMockito.spy(新的B());
doReturn(null).when(dummyB.veryAnnoyingMethod(Mockito.anyInt(),Mockito.anyShort());
但它抛出了一个例外,我不认为这是我真正需要的
更新
读了一点之后,我似乎不得不使用PowerMockito.stub
,或者PowerMockito.suppress
。因此,我尝试了以下方法:
PowerMockito.stub(PowerMockito.method(B.class,“veryAnnoyingMethod”,int.class,short.class)).toReturn(null);
或
PowerMockito.suppress(PowerMockito.method(B.class,“veryAnnoyingMethod”,int.class,short.class));
但无论使用哪一种方法,该方法仍将执行
好的,我终于成功了。使用存根
和抑制
中的任何一个都有效。该测试如下所示:
@RunWith(PowerMockRunner.class)
@预科(B级)
类TestClassAWithPowerMockito{
@试验
public void testVeryImportantMethod()引发异常{
A=新的A();
suppress(PowerMockito.method(B.class,“veryAnnoyingMethod”,int.class,short.class));
a、 非常重要的方法();
...
}
}
注意@RunWith(PowerMockRunner.class)
和@PrepareForTest(B.class)
我必须在单独的类中使用PowerMockito进行测试,因为添加这两个符号会导致我的一些其他测试(不使用PowerMockito,但只使用Mockito)失败
希望这是明确的,并帮助正在与类似问题斗争的人