Dea*_*Iss 8 java testing junit super mockito
首先,我想说我正在使用遗留代码,无论我想要多少,我都无法改变它.
顺便说一句,我要做的是验证是否调用了super.method().这是我试图用Mockito/Junit测试的具体内容:
class foo extends JApplet(){
public void destroy(){
super.destroy();
}
}
Run Code Online (Sandbox Code Playgroud)
通常情况下,如果这不是一个被调用的超级方法,那么在测试用例中就足够了:
verify(foo).destroy();
Run Code Online (Sandbox Code Playgroud)
我已经看过几次问这个问题,通常回答是"继承是坏的,改变你的代码",遗憾的是我完全不能做.是否有人知道我可以做的任何框架或小小技巧来测试这个?
提前谢谢 - 我知道这是一个棘手的问题!
小智 5
您可以重构代码以在其他方法中调用super方法,例如:
class foo extends JApplet(){
public void destroy(){
callSuperDestroy();
}
public void callSuperDestroy(){
super.destroy();
}}
Run Code Online (Sandbox Code Playgroud)
然后验证:
verify(foo).callSuperDestroy();
Run Code Online (Sandbox Code Playgroud)
我还没有尝试过这个,但是是否可以创建一个自定义的 ClassLoader 来仅覆盖 JApplet 类的加载?然后你可以创建你自己的JApplet,它会记住是否调用了destroy()。
| 归档时间: |
|
| 查看次数: |
8419 次 |
| 最近记录: |