java - 如何测试 HTTP 请求
问题描述
我已经设置了这个简单的 http 请求,它只是向我的 IDE 终端返回一个“hello world”响应。我一直在研究测试,但我不太确定如何测试此方法返回的内容。
目前我已经对 JUnit 进行了自己的研究,但我什至不确定这是否是解决此问题的正确工具。我只研究了这个,因为它是一个 Java 工具。
public static void newRequest() throws IOException {
URL helloServer = new URL("http://localhost:5050/");
HttpRequestFactory requestFactory = new NetHttpTransport().createRequestFactory();
HttpRequest request = requestFactory.buildGetRequest(new GenericUrl(helloServer));
HttpResponse rawResponse = request.execute();
String responseString = rawResponse.parseAsString();
logger.debug(responseString);
}
对此的任何指导将不胜感激。该功能甚至需要测试吗?
解决方案
该功能甚至需要测试吗?好吧,这完全取决于你。此函数是否包含对您的应用程序至关重要的代码?如果是这样,那么是的。如果此功能中的错误影响很小,那么可能不会。
假设您要对此进行测试,则:
void
在函数名称说明之前,有问题的方法没有返回任何内容。您将需要查看测试函数的逻辑。在这种情况下,您需要检查是否收到了正确的响应。我可以想到两种方法来做到这一点:
- 修改代码以返回响应。
您可以更改函数以返回一个字符串,然后返回rawResponse.parseAsString();
(这与您正在记录的内容相同。
然后您可以从测试中调用该函数并检查返回的字符串。
- 从您的记录器获取日志消息。
根据您使用的日志记录,您可以获得该函数写入的日志消息。假设 log4j 那么有一些关于如何做到这一点的帖子:
就个人而言,我更喜欢第一种选择,因为它省力。我还会考虑返回响应的正文而不是原始响应。
推荐阅读
- swiftui - SwiftUI - ScrollViewReader 滚动到顶部,包括填充(锚点加常量)
- jenkins - 詹金斯在舞台级别的发布操作受 buildResult 的影响
- image-processing - INTA图像的批量转换
- animation - 使用 JAVA FX 旋转图像
- python - 如何在 python 中从 twitter 中的用户数据字典中获取/访问“名称”属性?
- angular - angular2+:如何遍历三态(不确定)复选框的值
- python - 自定义MongoDB类的模拟方法
- nuget - 我使用的 NuGet 包会在 10 年后可用吗
- python - 多处理redis实例-thread_lock错误
- python - Alternatives of zip to create dictionaries from lists in python 3.7