我偶然发现了一个测试问题,该问题模拟了超类对受保护方法的调用。

例如:

public class A extends B {
    @Override
    protected int calculate(int x, int y) {
         int result = super.calculate(x, y);
         result += 10;
         return result;
    }
}


那么可以通过任何方式模拟super.calcluate(x,y)吗?我已经用间谍尝试过,但是间谍无法调用超级方法,因为它超出了我的范围。

最佳答案

我想像一个模拟框架将允许您模拟protected成员,但是如果您的模拟框架不允许,您是否考虑过创建该类的存根?

public class AStub extends A {
    @Override
    protected int calculate(int x, int y) {
        // do stub calculation
        return calculation;
    }
}

08-18 03:30