Testng Powermockito:如何“释放”一个用@PrepareForest注释的类?

Testng Powermockito:如何“释放”一个用@PrepareForest注释的类?,testng,mockito,powermock,Testng,Mockito,Powermock,我有一个类,例如由静态函数组成的ExampleClass。对于在另一个类中的测试,它由带有@PrepareForTest注释的powermock模拟,然后由mockStatic模拟 ExampleClass的测试类本身也将PowerMockTestCase扩展到静态模拟的第三方库 现在的问题是,我们的代码覆盖率工具不再运行这些测试。我怀疑ExampleClass被@PrepareForest注释“隐藏”了。因此,在运行测试类之后,我想做一些类似于“释放”带注释的类或将其从powermockito

我有一个类,例如由静态函数组成的ExampleClass。对于在另一个类中的测试,它由带有@PrepareForTest注释的powermock模拟,然后由mockStatic模拟

ExampleClass的测试类本身也将PowerMockTestCase扩展到静态模拟的第三方库

现在的问题是,我们的代码覆盖率工具不再运行这些测试。我怀疑ExampleClass被@PrepareForest注释“隐藏”了。因此,在运行测试类之后,我想做一些类似于“释放”带注释的类或将其从powermockito类装入器中删除的事情。 如何做到这一点


以某种方式“释放”类

我认为您担心的是,您的所有单元测试都可能在同一个类加载器中运行,因此PowerMock操纵的ExampleClass类也可能会影响其他单元测试。在这种情况下,您可以尝试:

使用PowerMock,即使用Java instrumentation API而不是classloader或 实现一个JUnitRunner,它在一个单独的类加载器中执行每个测试。看看这个。
我认为JUnit使用单独的类加载器进行测试,但我找不到任何权威的源代码

EclEmma是您的代码覆盖工具吗?如果是这样的话,这是一个已知的问题,不太可能被解决。我们使用JaCoco——至少来自EclEmma团队。您是否参考了解决此问题的链接/错误条目?提前谢谢!这可能会提供一些信息:。非常感谢。虽然我们使用TestNG而不是jUnit,但第一种方法也处理它: