遇到此问题时,我通常会执行与您描述的相同的操作,除了将静态方法设置为受保护的方法之外,以便可以手动调用它。最重要的是,我确保可以多次调用该方法而不会出现问题(否则就测试而言,它并不比静态初始化程序好)。
这工作得相当好,我可以实际测试静态初始化方法是否达到了我期望/想要的方式。有时,拥有一些静态初始化代码是最容易的,而构建一个过于复杂的系统来替换它是不值得的。
使用此机制时,请确保记录该受保护的方法仅出于测试目的而公开,并希望其他开发人员不会使用它。当然,这可能不是一个可行的解决方案,例如,如果类的接口在外部可见(作为其他团队的某种子组件,或者作为公共框架)。不过,这是解决问题的简单方法,不需要第三方库来建立(我喜欢)。



