Him*_*dar 4 unit-testing seam easymock jmock mockito
我正在寻找一个解决方案来模拟子类ButtonClicker中的超级调用.
Class Click {
public void buttonClick() throws java.lang.Exception { /* compiled code */ } }
Class ButtonClicker extends Click {
@Override
public void buttonClick() throws Exception {
super.buttonClick();
} }
Run Code Online (Sandbox Code Playgroud)
使用继承会降低代码的可测试性.考虑替换继承代表团和嘲笑的委托.
提取接口IClicker
interface IClicker {
void buttonClick();
}
Run Code Online (Sandbox Code Playgroud)
IClicker在Clicker课堂上实施.如果您正在使用第三方代码,请考虑使用适配器模式
重写您的ButtonClicker以下内容:
class ButtonClicker implements IClicker {
Clicker delegate;
ButtonClicker(Clicker delegate) {
this.delegate = delegate;
}
@Override
public void buttonClick() throws Exception {
delegate.buttonClick();
}
}
Run Code Online (Sandbox Code Playgroud)
现在只需将mock作为构造函数参数传递:
Clicker mock = Mockito.mock(Clicker.class);
// stubbing here
ButtonClicker buttonClicker = new ButtonClicker(mock);
Run Code Online (Sandbox Code Playgroud)