【问题标题】:Easymock: How to mock call on protected method with no visibilityEasymock:如何在不可见的情况下模拟受保护方法的调用
【发布时间】:2013-10-23 08:47:19
【问题描述】:

我正在使用 apache httpclient-4.0.1 从我的应用程序中进行 Rest 调用,在我尝试为此创建单元测试之前一切正常。我正在使用easymock,当我尝试模拟我的DefaultHttpClient.execute(HttpUriRequest) 时,出现以下错误。

java.lang.IllegalStateException: missing behavior definition for the preceeding method call createHttpContext()

我查看了代码,似乎在 execute(HttpUriRequest) 方法上调用了这个方法 (createHttpContext()),但它是一个 protected 方法,所以我看不到它。

那么你如何模拟这个调用呢?

【问题讨论】:

    标签: java unit-testing junit protected easymock


    【解决方案1】:

    原则上,您应该只模拟您的 SUT 在其协作者身上调用的方法。如果你需要模拟你的 SUT 没有直接调用的东西,那么你做错了。

    如果问题是您需要模拟静态调用,有几种解决方案。

    • 将静态调用提取到 SUT 中的不同方法并测试 SUT 的部分模拟版本(仅模拟完成静态调用的新方法)。 Partial mocks using easymock
    • 使用 PowerMock 并直接模拟静态调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 2018-10-12
      • 2012-06-13
      • 1970-01-01
      • 2016-03-09
      • 2016-05-29
      相关资源
      最近更新 更多