我想知道是否可以使用PowerMock
或任何其他库来模拟库中类的静态调用。该第三方库中的类调用了rt.jar中的一个类,我希望返回一个返回Type
的自定义实现。我试图在测试代码之外做这个。
否则,我不得不从该库扩展一些类并替换一些实现。有人做过这样的事吗?
答案 0 :(得分:0)
是的,有可能,例如如果您只想模拟一个方法,请使用PowerMock.mockStatic()
或PowerMock.mockStaticPartial()
。
PowerMock的主页上有一个非常好的教程。
我发布了an example on SO。
[编辑]如果你想在生产代码中做这样的魔术,我建议不要使用测试框架。也许Groovy可以帮助你 - Groovy可以在运行时操作类(甚至是JDK类),而且它(我认为)是JVM之上的一个更薄的层。
答案 1 :(得分:0)
一般来说,做这样的硬核短信是非常糟糕的(它不是嘲笑你描述的内容)。我会在这个库上构建一个小抽象,这样你就可以完全控制你想要返回的内容。可以使用PowerMock外部测试的一些功能,但这不是一块蛋糕。这里有粗略的描述,如果你真的需要可以提供帮助:https://groups.google.com/d/msg/powermock/SMDMe-y6fLg/1HF0TsGOqTIJ
无论如何,我不建议这样做。