javax.ws.rs按目标进行REST测试 - 在哪里获取或设置服务器地址?

时间:2018-04-28 13:17:42

标签: java rest unit-testing jersey jersey-test-framework

我单位测试在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/),但我不知道它来自哪里,这个模仿的服务器不知道来自{{的API函数1}}字符串。

我应该如何编写单元测试的这一部分,以便普遍运行?

我认为overrode configure()方法可能有所帮助,但我不确定。

1 个答案:

答案 0 :(得分:0)

我找到了!

测试类从JerseyTest类扩展。

public class DocumentTypesTest extends JerseyTest {

该类具有configure()方法,必须覆盖:

@Override
protected Application configure() {
    return new ResourceConfig(DocumentTypes.class);
}

新的重写方法应该返回测试API函数所在的类的配置。

这可能会引起一些误解:您的API函数可以通过' value ='进行分组。来自几个班级。而你(就像我一样)可以为该组的所有API函数创建相同的测试类。 那不会工作! 。您应该为每种API方法制作单独的测试类。类。