java - 我可以在 Java 中模拟 protected 父类(super class)方法调用吗?

标签 java mocking protected super superclass

我偶然发现了一个测试问题,该问题模拟了父类(super class)对 protected 方法的调用。

例如:

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)?我已经用 spy 试过了,但是 spy 无法调用 super 方法,因为我认为它超出了范围。

最佳答案

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

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

关于java - 我可以在 Java 中模拟 protected 父类(super class)方法调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7635353/

相关文章:

java - mkdirs() 在 Gingerbread 上不起作用?

Java,匿名内部类定义

java - Cassandra DataStax 插入的最大尺寸是多少

c# - 模拟静态方法 Activator.CreateInstance 以返回另一个类的模拟

python - 在 python 上模拟父类(super class)调用

c++ - 在派生类中使用 protected 说明符

java - org.xml.sax.SAXParseException; lineNumber : 6; columnNumber: 122; cvc-elt. 1:找不到元素 'beans' 的声明

java - 使用 Mockito 创建模拟数组

c++ - 如何在派生类函数中修改基类变量的保护值?

doxygen - 是否可以防止 Doxygen 输出 protected 成员?