有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用Servlet2.5测试SpringFramework 4

我在使用Servlet2.5使SpringFramework4与现有项目协同工作时遇到问题。我的web项目实际上运行良好,但我的测试用例失败,这是由MockHttpServletRequest引起的,它引发了以下异常:-

java.lang.NoClassDefFoundError: javax/servlet/AsyncContext
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)

我尝试添加任何一个依赖项,但我会得到其他与Servlet 3.0相关的异常:-

<dependency>
 <groupId>javax</groupId>
 <artifactId>javaee-api</artifactId>
 <version>6.0</version>
 <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>servlet-api</artifactId>
  <version>3.0.20090124</version>
  <scope>test</scope>
</dependency>

基于Spring框架网站,据说它使用Servlet2.5。然而,Spring 4's ^{}似乎依赖于Servlet3.0转发

如何解决此问题?谢谢


共 (1) 个答案

  1. # 1 楼答案

    将spring测试的依赖项限制为4之前的版本,如spring-test-3.2

    我不知道Spring-4放弃了对Servlet-2.5的支持3.9 Testing Improvements说:

    As of Spring 4.0, the set of mocks in the org.springframework.mock.web package is now compatible with Servlet 3.0.

    我不明白“与servlet-3兼容”意味着放弃servlet-2.5支持。如果是故意的,至少应该进入参考文件。所以它甚至可能值得提出一个关于它的bug(SPR-11292

    但是等等,还有3.4 Java EE 6 and 7

    Java EE version 6 or above is now considered the baseline for Spring Framework 4, with the JPA 2.0 and Servlet 3.0 specifications being of particular relevance.[..] it is possible to deploy a Spring application into a Servlet 2.5 environment; however, Servlet 3.0+ is recommended when at all possible.

    所以我认为这符合文件中提到的条件


    更新: Spring 4.0.1参考文档现在更清楚地介绍了模拟:

    Servlet 3.0+ is strongly recommended and a prerequisite in Spring's test and mock packages for test setups in development environments.