如何使用PowerMock部分模拟公共方法?

mav*_*ick 4 java junit partial-mocks powermock

以下是我的课

public class SomeClass {
    public ReturnType1 testThisMethod(Type1 param1, Type2 param2) {
        //some code
        helperMethodPublic(param1,param2);
        //more code follows  
    }   

    public ReturnType2 helperMethodPublic(Type1 param1, Type2 param2) {
        //some code            
    }
} 
Run Code Online (Sandbox Code Playgroud)

所以在上面的类中测试testThisMethod()时,我想部分模拟helperMethodPublic().

截至目前,我正在做以下事情:

SomeClass someClassMock = 
    PowerMock.createPartialMock(SomeClass.class,"helperMethodPublic");
PowerMock.expectPrivate(someClassMock, "helperMethodPublic, param1, param2).
    andReturn(returnObject);
Run Code Online (Sandbox Code Playgroud)

编译器没有抱怨.所以我尝试运行我的测试,当代码命中helperMethodPublic()方法时,控件进入方法并开始执行那里的每一行代码.我该如何防止这种情况发生?

ped*_*rro 8

另一个不依赖于模拟框架的解决方案是覆盖测试中定义的匿名子类中的'helperMethodPublic':

SomeClass sc = new SomeClass() {
   @Override
   public ReturnType2 helperMethodPublic(Type1 p1, Type2 p2) {
      return returnObject;
   }
};
Run Code Online (Sandbox Code Playgroud)

然后当你在测试中使用这个实例时,它将运行'testThisMethod'的原始版本和'helperMethodPublic'的重写版本