Das Problem besteht darin, dass der Jersey-Test nicht in einer Servlet-Umgebung ausgeführt wird, was für die Arbeit mit den Servlet-APIs erforderlich ist. Wenn Sie nicht wissen, muss Jersey nicht in einem Servlet-Container ausgeführt werden. Wenn Sie den provider-grizzly2 verwenden und den Testcontainer nicht einrichten, wird standardmäßig die GrizzlyTestContainerFactory ausgeführt, die nur Grizzly und einen HTTP-Server startet, keinen Servlet-Container.
Um den JerseyTest als Servlet-Container zu konfigurieren, müssen wir zwei andere Methoden überschreiben: configurDeployment und getTestContainerFactory. Mit letzterem müssen wir die GrizzlyWebTestContainerFactory zurückgeben, die den Servlet-Container einrichten wird. In der configureDeployment-Methode können wir die Anwendung auf Servlet-Ebene konfigurieren.
public class ServletTest erweitert JersyTest {
@Override
public ResourceConfig configure() {
// configure Jersey
}
@Override
public TestContainerFactory getTestContainerFactory() {
return new GrizzlyWebTestContainerFactory();
}
@Override
public DeploymentContext configureDeployment() {
return ServletDeploymentContext
.forServlet(new ServletContainer(configure()))
.build();
}
}
Wenn Sie den Provider-inmemory verwenden, wird es nicht Servlet Implementierung unterstützen, so dass Sie an der Anlegestelle Provider wechseln müssen oder der Grizzly-Anbieter.
Was verwenden Sie zum Testen? –