gpt4 book ai didi

java - 从 Groovy 测试用例模拟 Java 类

转载 作者:行者123 更新时间:2023-12-02 14:54:31 26 4
gpt4 key购买 nike

我正在尝试用 groovy 为用 java 编写的类编写一个测试用例。 Java 类(名称:Helper)中有一个方法,其中获取 HttpClient 对象并在其上调用 executeMethod。我试图在常规测试用例中模拟这个 httpClient.executeMethod() ,但无法正确模拟它。

下面是Java类
//这个帮助类是一个java类

public class Helper{

public static message(final String serviceUrl){
----------some code--------

HttpClient httpclient = new HttpClient();
HttpMethod httpmethod = new HttpMethod();

// the below is the line that iam trying to mock
String code = httpClient.executeMethod(method);

}
}

到目前为止,我用 groovy 编写的测试用例是:
    void testSendMessage(){
def serviceUrl = properties.getProperty("ITEM").toString()

// mocking to return null
def mockJobServiceFactory = new MockFor(HttpClient)
mockJobServiceFactory.demand.executeMethod{ HttpMethod str ->
return null
}

mockJobServiceFactory.use {
def responseXml = helper.message(serviceUrl)

}
}

关于为什么它没有正确模拟的任何想法。
提前谢谢

最佳答案

它不起作用,因为编译的 Java 类在构造 HttpClient 实例时未通过 Groovy 的元对象协议(protocol) (MOP),因此未实例化模拟对象。

由于 HttpClient 实例是线程安全的,我会考虑将其作为依赖项注入(inject)到类中,这样测试就可以简单地注入(inject)模拟。

关于java - 从 Groovy 测试用例模拟 Java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12164690/

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