2

我想知道是否可以使用PowerMock或任何其他库来模拟库中类中的静态调用。该第三方库中的类调用 rt.jar 中的一个类,我想要返回该返回的自定义实现Type。我正在尝试在测试代码之外执行此操作。

否则,我不得不从该库中扩展一些类并替换一些实现。以前有人做过这样的事情吗?

4

2 回答 2

1

是的,它是可能的,例如,仅使用PowerMock.mockStatic()或者PowerMock.mockStaticPartial()如果您想模拟一种方法。

PowerMock 的主页上有一个相当不错的教程。

在 SO 上发布了一个示例

[编辑] 但是,如果你想在生产代码中做这样的魔法,我建议不要使用测试框架。也许Groovy可以帮助您 - 使用 Groovy 可以在运行时操作类(甚至 JDK 类),而且它(我认为)是 JVM 之上的一个更薄的层。

于 2013-03-11T09:26:09.183 回答
0

一般来说,做这样的核心存根真是个坏主意(这不是在嘲笑你所描述的)。我会在这个库上构建微小的抽象,这样你就可以完全控制你想要返回的内容。可以在外部测试中使用 PowerMock 的某些功能,但这不是小菜一碟。如果您真的想要,这里有粗略的描述可以提供帮助:https ://groups.google.com/d/msg/powermock/SMDMe-y6fLg/1HF0TsGOqTIJ

无论如何,我不建议这样做。

于 2013-03-11T09:30:55.403 回答