如何模拟超级引用(在超级类上)?

gstackoverflow

有时,当我编写单元测试时,我应该模拟对超类的引用。

我已阅读以下问题:问题

这个答案与DI建议一起重构代码。但是我不能

这个答案另一种答案是不适合的,如果超类方法是足够大的。就我而言,我有很大的代码。是的,我知道它违反了SOLID OOD原则,但我只应该编写测试。我没有足够的时间进行重构。

说的问题是4年前问的!

当前Mockito或Powermock是否可以解决此问题?

更新

代码示例:

class BaseService {  
    public void save() {
      // a lot of code here! I cannot change this code.
    }  
}

public Childservice extends BaseService {  
    public void save(){  
        //logic for testing
        super.save();
       //logic for testing
    }  
} 

更新2

public class Parent {
    public int save() {
         return 99;
    }   
}

public class Child extends Parent {
    public int save() {
        int i = super.save();
        return i*2;
    }
}

并测试:

@RunWith(PowerMockRunner.class)
@PrepareForTest(Parent.class)
public class ParentTest {
    @Test
    public void testSave() {       
        PowerMockito.suppress(PowerMockito.methodsDeclaredIn(Parent.class));        
        System.out.println(new Child().save());
    }
}

输出:198

加博尔·利普塔克(GáborLipták)

使用Powermock可以替换或取消显示方法,因此可以更改通过完成的操作BaseService.save()您还可以使方法对抑制无效。您甚至可以禁止使用静态初始化程序块。

请阅读Powermock作者的博客条目请参见“更换”一章。

更新:

抑制似乎对我有用,但是请不要使用。见下图:在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何模拟超级键?

来自分类Dev

来自抽象类的超级类的模拟字段

来自分类Dev

无法引用超级方法

来自分类Dev

在视图代码类文件中引用超级视图

来自分类Dev

超级类的Bean验证

来自分类Dev

功能或类之外的“超级”

来自分类Dev

Ruby类(超级)

来自分类Dev

元类中的超级

来自分类Dev

如何使用AutoHotkey在Windows 10中模拟超级密钥

来自分类Dev

如何禁用超级键?

来自分类Dev

如何禁用超级键?

来自分类Dev

测试扩展类时,基本ES6类的玩笑模拟方法(超级方法)

来自分类Dev

如何在单个超级映射的类中创建ManyToOne关系

来自分类Dev

使用超级动态类继承

来自分类Dev

超级类检查responsToSelector失败

来自分类Dev

用于超级类调用的responsToSelector

来自分类Dev

如何在超级树节点上显示图像?

来自分类Dev

如何在Windows 10上重新获得启动超级按钮?

来自分类Dev

Kivy ScreenManager不再引用.py文件类中的类。属性错误:“超级”具有

来自分类Dev

通过Fragment超级类或扩展的Fragment类引用片段之间有什么区别?

来自分类Dev

DefaultTableModel上的“超级”和“此”

来自分类Dev

计数泰坦上的超级节点

来自分类Dev

在Swift中从模拟中调用超级

来自分类Dev

如何设置超级用户位?

来自分类Dev

如何使用Windows(超级)键?

来自分类Dev

如何使用Windows(超级)键?

来自分类Dev

如何设置超级用户位?

来自分类Dev

如何重新映射超级键?

来自分类Dev

如何激活超级+滚动缩放?