java – Mockito:当方法A.a被调用然后执行B.b

我正在使用Mockito进行JUnit测试.
所以有一个给定的类A是从我想要测试的代码中使用的:
class A{

    public A(){}

    public final String a(String x){
        return "A.a: " + x;
    }

}

并且我想用另一个方法调用替换方法调用A.a具有相同的参数和相同类型的返回值.正如你所看到的,它不可能通过将类扩展为final来覆盖方法a.那么现在我现在是另一个B类的方法B.b:

class B{

    public B(){}

    public String b(String x){
        return "B.b: " + x;
    }

}

现在我想确保每次从代码调用A.a时,都会使用B.b的返回值.有没有可能通过Mockito来实现这个目的(像Mockito.when(A.a(x))),thenReturn(B.b(x));),但使用相同的参数x,而不知道x的值?

任何帮助将不胜感激,谢谢你提前!

解决方法

根据 Mockito limits,不可能覆盖Mockito生成的模拟的最终方法.但是,您可以使用 Powermock在运行时破解代码,以便Mockito可以完成其工作.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...