【问题标题】:How @WebAppConfiguration works without servlet or application container? [closed]@WebAppConfiguration 在没有 servlet 或应用程序容器的情况下如何工作? [关闭]
【发布时间】:2019-11-17 01:39:41
【问题描述】:

我正在使用 spring 4 和 testng。当我根本没有安装像 tomcat 这样的 servlet 容器时,@WebAppConfiguration 如何正确加载 WebApplicationContext 和 servlet。在这种情况下是否可以通过 url 访问 servlet 还是必须安装 web 服务器?

【问题讨论】:

    标签: spring-test


    【解决方案1】:

    您不需要安装真正的 servlet 容器。你可以认为@WebAppConfiguration创建的servlet容器只是一个假的、基于内存的servlet容器,而不是像Tomcat这样的真实容器。它只能通过以编程方式调用其方法来工作,而不能通过 URL 调用。

    这个假Servlet容器的实际实现包括MockServletContextMockHttpServletRequestMockHttpServletResponseMockHttpSessionMockServletConfig等......

    想法是为了测试一个HttpServlet,我们首先通过设置MockHttpServletRequest的相关状态来配置HTTP请求,然后以编程方式调用被测试的HttpServlet,并从MockHttpServletResponse验证结果:

    @ContextConfiguration
    @WebAppConfiguration
    public class FooServletTest {
    
       @Autowired MockHttpServletRequest request;
       @Autowired MockHttpServletResponse response;
    
       @Test
       public void test1(){
           request.setParameter("user", "enigma");
           //blablab.
    
    
           FooServlet sut = new FooServlet();
           sut.doGet(request, response);
    
           //Then assert the response is correct by checking its status
    
       }
    }
    

    更多详情请见docs

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      相关资源
      最近更新 更多