我单位测试在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()方法可能有所帮助,但我不确定。
答案 0 :(得分:0)
我找到了!
测试类从JerseyTest类扩展。
public class DocumentTypesTest extends JerseyTest {
该类具有configure()方法,必须覆盖:
@Override
protected Application configure() {
return new ResourceConfig(DocumentTypes.class);
}
新的重写方法应该返回测试API函数所在的类的配置。
这可能会引起一些误解:您的API函数可以通过' value ='进行分组。来自几个班级。而你(就像我一样)可以为该组的所有API函数创建相同的测试类。 那不会工作! 。您应该为每种API方法制作单独的测试类。类。