模拟需要在单元测试中测试的同类的静态方法

May*_*nha 1 java unit-testing

我有一个有多个静态方法的类.1静态方法调用另一个私有方法,最终调用第二个公共静态方法.我想模仿第二个静态方法.那可能吗.例如

public static A(){
    b();
} 
private static b(){
    c();
}
public static c(){
}
Run Code Online (Sandbox Code Playgroud)

我想模拟c(),但希望保持a()和b()的功能.这可能吗?如果是这样,怎么样?

Gho*_*ica 5

这个现有的SO 问题告诉你如何使用PowerMockito和静态模拟,以及Mockito 的间谍概念.

但是输入中缺少的是:尽管这些技术解决方案有效,但您应该考虑不要走这条路.

相反:您创建了一个难以测试的设计.现在你正在寻找(黑色)嘲弄魔法来启用测试.真正的答案是:退后一步,评估您的设计.尝试重做它,以便测试变得容易.

从长远来看,任何其他方面都浪费时间和精力.因为难以测试的设计在"真实"场景中也难以测试,并且它们通常不灵活且难以维持/增强.

  • 当答案重定向到正确的清理路径而不仅仅指向可以解决问题的解决方案但我确实不应该使用它因为它鼓励设计不佳时,我很感激. (3认同)