gpt4 book ai didi

java - 注入(inject)测试

转载 作者:行者123 更新时间:2023-12-02 05:54:10 25 4
gpt4 key购买 nike

在Java中,我有一些代码通过HttpGet/HttpResponse从服务器获取一些数据,然后将HttpResponse转换为字符串。它就像一个魅力。

我正在尝试对这两个单独的函数编写良好的单元测试,因为我找到了一个用例来确定 HttpGet 是否失败以及服务器回复代码是什么,以及从 HttpResponse 到字符串的转换是否失败无论出于何种原因。 HttpResponse 实体 toString 提取可能会失败,因为此过程大约需要半小时才能完成。它是一个速度慢的盒子,而且数据很多。

我的问题是如何“伪造”一个 HttpResponse 对象,该对象包含一个由资源包中的本地文件组成的实体。显然,我无法使用 file:///,因为它看起来不受 HttpGet(1) 支持;

同样,我的代码具有以下两个功能:

public HttpResponse requestData(){
String urlLocation = extStrings.getString("urlLocation"); <--- I need to support local file here
httpClient = new DefaultHttpClient();
httpGet = new HttpGet(urlLocation);
HttpResponse response = null;
try {
logger.info("Calling the URL connection");
response = httpClient.execute(httpGet);
statusCode = response.getStatusLine().getStatusCode();
} catch (IOException ex) {
logger.error("Could not start connection with the URL: " + urlLocation);
httpGet.releaseConnection();
}
if(statusCode != 200){
logger.error("Server reply code is not 200 as desired. Instead it is: " + statusCode);
System.exit(0);
}
return response;
}

public String responseData(response){
if(response == null){ return null; }
HttpEntity entity;
String result = "";
logger.info("Getting the entity of the URL response");
entity = response.getEntity();
try {
logger.info("Converting the page into a string, this takes too long");
result = EntityUtils.toString(entity);
logger.info("Consuming the entity");
EntityUtils.consume(entity);
} catch (IOException ex) {
logger.error("Problem with entity conversion");
}
logger.info("Releasing the connection");
httpGet.releaseConnection();
return result;
}

在主要部分;响应数据(请求数据());

最佳答案

您可以尝试使用PowerMockito来拦截构造函数调用。 new DefaultHttpClient() 在你的情况下。然后使用模拟对象返回您的“假”HttpResponse。检查此处的示例:

How to mock local variables using mockito or powermock

关于java - 注入(inject)测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23253558/

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