根据 powermock 的支持以及 这篇博客,我猜想在测试中无法避免使用注释。我认为我们需要使用 @PrepareForTest(StaticClass.class) 注释。所以我认为至少无法避免使用 @PrepareForTest。也许我是错的,但我只是想分享一下我发现的东西。
实际上,虽然最终解决方案的方式很痛苦,但这是可能的。 PowerMock runner只是在不同的类加载器中初始化测试环境,在该类加载器中,由PrepareForTest注释指定的类被Javassist调整。因此,假设您模仿类加载器的工作并自己调用Javassist,则可以实现相同的效果。 例如,我利用PowerMock(没有注释的内部)来发现给定方法引用的方法名称。更多信息可以在我的博客(以捷克语编写,带有工作示例)中找到。我强调这种用法仅用于实验目的,不适合生产使用。