【问题标题】:mocking a class that has a private constructor?模拟具有私有构造函数的类?
【发布时间】:2015-06-14 22:53:06
【问题描述】:

我需要模拟一个具有私有构造函数且只有一个静态创建方法的 java 类。

在这种情况下,典型的解决方案是什么。

有或没有框架。

【问题讨论】:

    标签: java scala mocking mockito scalatest


    【解决方案1】:

    您可以使用 PowerMock 模拟静态方法 https://code.google.com/p/powermock/wiki/MockitoUsage,因此您可以模拟静态创建方法并返回任何您想要的。如果静态方法返回一个接口而不是一个类会更容易,这样您就可以返回您自己的模拟实现。

    【讨论】:

    • 我在这里和那里阅读,作为解决方案出现的解决方案是围绕类创建一个包装器。它背后的理性是,不要嘲笑你不拥有的类型。事实上,类型来自一个库。我不拥有它。但是,我不喜欢包装东西的想法。我认为这可能很昂贵。但至少我会模拟我的类型并验证调用。
    • 是的,如果您不拥有它,这是一种解决方案。包装它可以保护您的类的使用者免于处理 3rd 方库的实现细节。不过这是一种平衡——如果你试图把所有东西都包起来,你可能会发疯。
    • 知道了。谢谢 !!!在当前情况下,这只是一种痛苦,所以包装更好。但是,是的,只要我可以避免包装,我就会选择不包装。
    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多