我有一个类,例如由静态函数组成的 ExampleClass。对于在另一个类中进行测试,它由带有@PrepareForTest注释的powermock模拟,然后由mockStatic模拟。
ExampleClass 本身的测试类还扩展了 PowerMockTestCase 以静态模拟第三方库。
现在的问题是,我们的代码覆盖率工具不再运行这些测试。我怀疑示例类以某种方式被@PrepareForTest注释"隐藏"。因此,在运行测试类后,我想做一些事情,例如"释放"带注释的类或将其从 powermockito 类加载器中删除。如何做到这一点?
以某种方式"释放"类
我认为您担心的是您的所有单元测试都可能在同一类加载器中运行,因此 PowerMock 操作的 ExampleClass 类也可能影响其他单元测试。在这种情况下,您可以尝试:
- 使用
- PowerMock 的 Java 代理,该代理使用 Java 检测 API 而不是类加载器引导,或者
- 实现一个 JUnitRunner,它在单独的类装入器中执行每个测试。检查此线程。
我认为 JUnit 使用单独的类加载器进行测试,但我找不到任何权威来源。