Java 使用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

我试图模拟一个方法,不管调用这个方法的实例是什么。据我所知,这在Mockito上是不可能发生的,应该用PowerMockito来完成,但我不知道应该怎么做。 我有

公共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)失败

希望这是明确的,并帮助正在与类似问题斗争的人