gpt4 book ai didi

java - EasyMock 能否支持将多个重载方法添加到 createMockBuilder

转载 作者:搜寻专家 更新时间:2023-10-31 20:01:57 24 4
gpt4 key购买 nike

我正在处理使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com