我通过java -jar target/test-service-1.0-jar-with-dependencies.jar
命令
然而,当从Intellij Idea运行测试时,我无法弄清楚如何启动服务器..
这是当前的代码,不起作用
private HttpServer server;
private WebTarget target;
@Before
public void setUp() throws Exception {
// start the server
server = Main.startServer();
// create the client
Client c = ClientBuilder.newBuilder().register(JacksonFeature.class).build();
// uncomment the following line if you want to enable
// support for JSON in the client (you also have to uncomment
// dependency on jersey-media-json module in pom.xml and Main.startServer())
// --
// c.configuration().enable(new org.glassfish.jersey.media.json.JsonJaxbFeature());
target = c.target(Main.BASE_URI);
}
这是我的startServer代码
public static HttpServer startServer() {
// create a resource config that scans for JAX-RS resources and providers
ResourceConfig rc = new ResourceConfig().packages("com.test.service").register(JacksonFeature.class);
EncodingFilter.enableFor(rc, GZipEncoder.class);
rc.register(LoggingFilter.class);
rc.register(MultiPartFeature.class);
rc.register(CORSResponseFilter.class);
// rc.property("config", configParams);
// create and start a new instance of grizzly http server
// exposing the Jersey application at BASE_URI
HttpServer httpServer = GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
//httpServer.getServerConfiguration().addHttpHandler(shh);
return httpServer;
}
答案 0 :(得分:0)
它应该自己开始。但是对于测试,你可能想控制它什么时候开始。您可以将false
作为third argument to the server factory method传递。这样你就可以控制什么时候开始。
您可以在测试前后方法中的start
实例上调用stop
和HttpServer
。您还需要更新Main
课程中的代码,以致电start()
。
您可能还想查看Jersey Test Framework。在这里,您不需要启动和停止任何服务器。框架将为您处理它。它还使您的测试比您当前的设置更具可配置性。假设您只想要注册一个资源,或者您想要注入一些模拟服务。就个人而言,我会选择测试框架。