我正在处理使用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
的多个重载方法?
答案 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[]{})