1
57
PowerMock 是扩展EasyMock和Mockito的另一个模拟框架。使用PowerMock,您可以轻松地 remove unwanted behavior 来自类,例如静态初始值设定项。在您的示例中,只需向JUnit测试用例添加以下注释:
PowerMock不使用Java代理,因此不需要修改JVM启动参数。您只需添加jar文件和上述注释。 |
2
14
有时,我会在我的代码所依赖的类中找到静态initilizer。如果我不能重构代码,我就使用
PowerMock
的
阅读更多关于 suppressing unwanted behaviour .
|
3
13
这将进入更“高级”的JMockit。事实证明,您可以通过创建
我们还是走吧
|
4
6
在我看来,您正在治疗一种症状:依赖于静态初始化的糟糕设计。也许重构才是真正的解决方案。听起来你已经对你的电脑做了一些重构了
|
5
5
这工作得相当好,我可以实际测试静态初始值设定项方法是否实现了我期望/希望它实现的功能。有时候,拥有一些静态初始化代码是最容易的,而构建一个过于复杂的系统来替换它是不值得的。 当我使用这种机制时,我会确保记录受保护的方法仅用于测试目的,希望其他开发人员不会使用它。当然,这可能不是一个可行的解决方案,例如,如果类的接口是外部可见的(或者作为其他团队的某种子组件,或者作为公共框架)。不过,这是一个简单的解决方案,不需要设置第三方库(我喜欢)。 |
6
3
如果您不能使用Groovy,那么您将真正需要重构代码(可能需要注入类似于初始化器的东西)。 问候 |
7
1
单例和抽象工厂的某种混合可能会使您获得与今天相同的功能,并且具有良好的可测试性,但这会添加大量的锅炉板代码,因此最好尝试完全重构静态内容,或者至少可以使用一些不太复杂的解决方案。
|
8
1
和
然后您可以在不同的测试用例中使用它们
和
分别地 |
9
0
这不是一个真正的答案,但只是想知道——难道没有任何方法可以“逆转”对你的要求吗
如果存在这样的方法,则可以在类的
这只是一种预感,所以我可能错过了一些东西。 |
10
0
您可以使用PowerMock执行私有方法调用,如下所示:
|