【问题标题】:Powermock - @SuppressStaticInitializationFor affecting the unit-test of actual static class to be tested in a single run for all test classesPowermock - @SuppressStaticInitializationFor 影响要在单次运行中对所有测试类进行测试的实际静态类的单元测试
【发布时间】:2017-01-05 04:25:22
【问题描述】:
我有一个包含所有静态方法的类 X。还有一个应用 A 来测试这个类的行为。
我对两者都有单独的单元测试。
注意:我必须严格遵守为两者编写单独的单元测试。
抑制类 A 的静态初始化会影响我在类 A 中为 mockstatic 执行的类 X 的单元测试强>。
我不确定@SuppressStaticInitializationFor 的范围。
【问题讨论】:
标签:
unit-testing
junit
mockito
powermock
powermockito
【解决方案1】:
这就是在使用 PowerMock 来解决因不明智地使用 static 而引入的问题时的问题。请记住:静态是良好 OO 设计中的一种异常——因为它破坏了(简单的)单元测试、多态性,并导致您的类直接耦合!
所以我的建议是:避免使用 static 导致您要求 PowerMock 以进行单元测试。换句话说:学习如何创建可测试代码(你可以开始here))而不是使用PowerMock,然后创建可以用Mockito或EasyMock测试的生产代码......没有任何超能力需要。
如果您不能这样做:至少,请确保您从不创建会破坏您的单元测试环境的静态初始化代码。开发团队提出的生产类至少可以由 JUnit 测试加载是一个公平的要求。