EasyMock是否支持将多个重载方法添加到createMockBuilder中

时间:2014-12-16 01:15:51

标签: java easymock

我正在处理使用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的多个重载方法?

1 个答案:

答案 0 :(得分:5)

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

  

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[]{})