【问题标题】:Mocking method calls of unknown instances in easymock在easymock中模拟未知实例的方法调用
【发布时间】:2014-08-14 15:54:53
【问题描述】:

我有一个类有这样的方法

class MyClass(){
   public String myMethod(){
       Logger.info(new MyOtherClass().myOtherMethod());
   }
}

如何使用 EasyMock 模拟 myOtherMethod() 的调用?

背景:

最初我将 myOtherMethod 写为静态方法。用于测试,因为我无法模拟静态方法调用 我最终编写了一个调用静态方法的实例方法。
我尝试使用 PowerMock 模拟我的代码的静态方法 versin,但是在使用 JSR-303 bean 验证器时它显示了一些错误(请参阅here)和我也没有找到任何将 PowerMockRunner 与 SpringJunit4ClassRunner 集成的有效解决方案,这是我的案例之一。

【问题讨论】:

  • 我认为你不能使用 Easymock。试试 Powermock。
  • 你不能用 EasyMock 模拟这个调用,因为你不能模拟 MyOtherClass 对象。
  • 无论是模拟静态方法还是模拟构造函数,都需要使用 PowerMock。人们犯的主要错误是在 @PrepareForTest 注释中包含不正确的类。关于如何模拟静态和构造函数的文档实际上非常好。 Here's The mocking statics onehere's the mocking constructors one
  • 实例方法正在被 powermock 模拟。但是,我得到了与here 相同的异常

标签: java unit-testing junit mocking easymock


【解决方案1】:

您可以使用PowerMock.expectNew(...) 模拟功能,如here 所述。

确保您已正确注释测试用例类。很多时候人们错过了你必须使用类调用 @PrepareForTest(ClassThatCreatesTheNewInstance.class) 注释中的构造函数的细节。

如果您仍然遇到错误,请发布您的测试用例代码和堆栈跟踪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多