Java Jersey测试中的请求返回404

Java Jersey测试中的请求返回404,java,jersey,jersey-test-framework,Java,Jersey,Jersey Test Framework,这个问题的现有答案对我没有帮助——我正在对我的应用程序的根路径运行简单的测试,但我总是得到404作为响应状态代码。我正在Tomcat9上运行应用程序,我的配置在web.xml中 依赖项列表(我希望我没有忘记什么): 我正在尝试测试的控制器: package com.sigma_hotel_manager; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.GET; import javax.ws.rs.Path;

这个问题的现有答案对我没有帮助——我正在对我的应用程序的根路径运行简单的测试,但我总是得到404作为响应状态代码。我正在Tomcat9上运行应用程序,我的配置在
web.xml

依赖项列表(我希望我没有忘记什么):

我正在尝试测试的控制器:

package com.sigma_hotel_manager;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.glassfish.jersey.server.mvc.Viewable;

@Path("/")
public class WelcomeController {

    @GET
    @Produces(MediaType.TEXT_HTML+";charset=UTF-8")
    public Viewable getHome(@Context HttpServletRequest request) {
        request.setAttribute("title", "Sigma Hotel Manager");
        return new Viewable("/welcome/index");
    }

}
实际测试:

package com.sigma_hotel_manager;

import static org.junit.Assert.assertEquals;

import javax.ws.rs.core.Application;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.DeploymentContext;
import org.glassfish.jersey.test.JerseyTest;
import org.glassfish.jersey.test.ServletDeploymentContext;
import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory;
import org.glassfish.jersey.test.spi.TestContainerException;
import org.glassfish.jersey.test.spi.TestContainerFactory;
import org.junit.Test;

public class WelcomeControllerTest extends JerseyTest {

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

    @Override
    protected DeploymentContext configureDeployment() {
        return ServletDeploymentContext.builder(configure()).build();
    }

    @Override
    protected TestContainerFactory getTestContainerFactory() throws TestContainerException {
        return new GrizzlyWebTestContainerFactory();
    }

    @Test
    public void getHomeIsSuccessful() {
        Response response = target("/").request().get();

        assertEquals("HTTP response should be 200: ", Status.OK.getStatusCode(), response.getStatus());
        assertEquals("HTTP content type should be: ", MediaType.TEXT_HTML, response.getHeaderString(HttpHeaders.CONTENT_TYPE));
    }

}
package com.sigma_hotel_manager;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.glassfish.jersey.server.mvc.Viewable;

@Path("/")
public class WelcomeController {

    @GET
    @Produces(MediaType.TEXT_HTML+";charset=UTF-8")
    public Viewable getHome(@Context HttpServletRequest request) {
        request.setAttribute("title", "Sigma Hotel Manager");
        return new Viewable("/welcome/index");
    }

}
package com.sigma_hotel_manager;

import static org.junit.Assert.assertEquals;

import javax.ws.rs.core.Application;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;

import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.DeploymentContext;
import org.glassfish.jersey.test.JerseyTest;
import org.glassfish.jersey.test.ServletDeploymentContext;
import org.glassfish.jersey.test.grizzly.GrizzlyWebTestContainerFactory;
import org.glassfish.jersey.test.spi.TestContainerException;
import org.glassfish.jersey.test.spi.TestContainerFactory;
import org.junit.Test;

public class WelcomeControllerTest extends JerseyTest {

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

    @Override
    protected DeploymentContext configureDeployment() {
        return ServletDeploymentContext.builder(configure()).build();
    }

    @Override
    protected TestContainerFactory getTestContainerFactory() throws TestContainerException {
        return new GrizzlyWebTestContainerFactory();
    }

    @Test
    public void getHomeIsSuccessful() {
        Response response = target("/").request().get();

        assertEquals("HTTP response should be 200: ", Status.OK.getStatusCode(), response.getStatus());
        assertEquals("HTTP content type should be: ", MediaType.TEXT_HTML, response.getHeaderString(HttpHeaders.CONTENT_TYPE));
    }

}