java - javax.ws.rs REST 目标测试 - 在哪里获取或设置服务器地址?
问题描述
我在哪里对 javax.ws.rs 中创建的 REST 函数进行单元测试,并使用 target() 作为 URL,如https://stackoverflow.com/a/28726499/715269,我不知道如何设置URL 的服务器部分。
如果我以硬方式设置它,则测试将仅在一个环境中运行,例如在发布服务器上。但通常,我在任何服务器上运行应用程序,API 函数在不同的服务器上工作,这取决于我启动应用程序的位置。
如果我不为目标设置任何服务器:
String targetUrl = "/api/v1/documentTypes";
try (Response response = target(targetUrl).request().post(Entity.json(simpleJson))) {
并查找响应的 URI,我看到那里设置了一些服务器部分(http://localhost:9998/),但我不知道它来自哪里,而且这个模仿的服务器不知道targetUrl
字符串中的 API 函数。
我应该如何编写这部分单元测试,以便普遍运行?
我认为可能覆盖 configure() 方法可能会有所帮助,但我不确定。
解决方案
我已经找到!
测试类从 JerseyTest 类扩展而来。
public class DocumentTypesTest extends JerseyTest {
该类具有 configure() 方法,必须被覆盖:
@Override
protected Application configure() {
return new ResourceConfig(DocumentTypes.class);
}
并且新的覆盖方法应该返回被测试 API 函数所在类的配置。
这可能会引起一些误解:您的 API 函数可以按来自多个类的 'value=' 分组。你(和我一样)可以为该组的所有 API 函数创建相同的测试类。那是行不通的!. 您应该为每个 API 方法的类创建单独的测试类。
推荐阅读
- python - 如何通过 Node JS 使用 Python 机器学习库,如 Numpy、Scipy、Pandas、Tensorflow
- python - 在 MSER 检测到的区域上执行凸包时出错
- mongodb - Spring mongo slice array in embedded document
- spring-boot - 无法解决 maven 项目中的 javax.annotation.Priority 依赖问题
- c++ - Why operator cannot be in parentheses?
- android - 在底部导航视图上重新创建活动
- c++ - Temporary object argument lifetime in a function
- c# - azure maps differentiate address from point of interest
- javascript - JavaScript 'IN' 语句
- sharepoint - 将现有文档库连接到共享点站点