2

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

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

我查看了代码,似乎在该方法createHttpContext()上调用了此方法(),execute(HttpUriRequest)但它是一种protected方法,因此我看不到它。

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

4

1 回答 1

1

原则上,您应该只模拟您的 SUT 在其合作者身上调用的方法。如果您需要模拟您的 SUT 未直接调用的某些内容,那么您做错了。

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

  • 将静态调用提取到 SUT 中的不同方法并测试 SUT 的部分模拟版本(仅模拟完成静态调用的新方法)。使用 easymock 进行部分模拟
  • 使用 PowerMock 并直接模拟静态调用。
于 2013-10-17T12:28:24.183 回答