繁体   English   中英

Easymock:如何在没有可见性的情况下模拟对受保护方法的调用

[英]Easymock: How to mock call on protected method with no visibility

我正在使用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方法,因此我无法看到它。

那么,您如何模拟这个电话?

原则上,您应该只模拟SUT在其协作者上调用的方法。 如果您需要模拟未由SUT直接调用的内容,则说明您做错了什么。

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

  • 将静态调用提取到SUT中的其他方法,并测试SUT的部分模拟版本(仅模拟完成静态调用的新方法)。 使用Easymock进行部分模拟
  • 使用PowerMock并直接模拟静态调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM