【问题标题】:Can EasyMock support multiple overloaded methods being added to createMockBuilderEasyMock 是否支持在 createMockBuilder 中添加多个重载方法
【发布时间】:2014-12-16 01:15:50
【问题描述】:

我正在处理使用EasyMock 模拟类的现有测试用例。我重载了一个无参数方法,因此现在存在一个获取字符串的方法。例如:

public class HelloClass {
   // This method always existed.
   public String methodHello() {
       ...
   }
   // This method is new; it overloads the methodHello() method.
   public String methodHello(String msg) {
       ...
   }
}

在测试类中,HelloClass 被模拟。结果,我添加了重载方法,以便我们拥有声明:

public static HelloClass mockHelloClass = createMockBuilder(HelloClass.class)
   .addMockedMethod("methodHello")
   .addMockedMethod("methodHello", String.class)
   .createMock();

但是,当我运行测试用例时,它们会失败。当我将methodHello(String) 方法设为私有时,测试用例再次通过。

EasyMock 是否能够处理添加到 createMockBuilder 的多个重载方法?

【问题讨论】:

  • 我已经做过很多次了,从来没有遇到过问题。将重载方法添加到要模拟的方法集中后,您收到的错误消息是什么?完整的堆栈跟踪肯定会有所帮助。

标签: java easymock


【解决方案1】:

我认为你在运行时遇到了这个异常:

java.lang.RuntimeException:不明确的名称:不止一种方法 命名方法你好

你的模拟对象应该是这样的:

public static HelloClass mockHelloClass = createMockBuilder(HelloClass.class)
   .addMockedMethod("methodHello", new Class[]{}) // you got this one wrong
   .addMockedMethod("methodHello", String.class)
   .createMock();

您应该清楚地指定要模拟哪些方法 - 添加一个模拟方法,如

addMockedMethod("methodHello")

并不意味着您正在谈论不带参数的重载变体。这就是您表示它的方式:

addMockedMethod("methodHello", new Class[]{})

【讨论】:

    猜你喜欢
    • 2013-04-12
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多