作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在处理使用 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)
方法设为私有(private)时,测试用例再次通过。
EasyMock
是否能够处理添加到 createMockBuilder
的多个重载方法?
最佳答案
我认为你在运行时遇到了这个异常:
java.lang.RuntimeException: Ambiguous name: More than one method are named methodHello
下面是您的模拟对象应该看起来像的样子:
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[]{})
关于java - EasyMock 能否支持将多个重载方法添加到 createMockBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27495998/
我正在处理使用 EasyMock 模拟类的现有测试用例。我重载了一个无参数方法,因此现在存在一个方法来获取字符串。例如: public class HelloClass { // This me
我是一名优秀的程序员,十分优秀!