Spring 3.1缺少ServletContext

时间:2013-05-29 19:57:11

标签: spring testing

我正在尝试为我的spring应用程序编写集成测试。我的所有spring bean都是在xml文件中定义的,所以我使用配置文件来解析它们。

这是我的测试:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = GenericXmlContextLoader.class, locations = {"classpath:/spring/spring-config.xml"})   
@Profile("dev")
public class AccountDAOTest {

   private EmbeddedDatabase database;

   @Autowired
   AccountDAO accountDAO;

   @Before
   public void setUp() {

      System.setProperty("spring.profiles.active", "dev");
      database = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL).setName("memdb")
                                              .addScript("classpath:resources/createAccount.sql").build();
      Assert.assertNotNull(database);
   }

   @Test
   public void testFind() throws Exception {
      List<Account> accounts = accountDAO.findAll();
   }
}

我的spring-config.xml只是一个标准配置文件

<beans>
  <beans profile="prod" >
  <context:annotation-config/>
  <tx:annotation-driven transaction-manager="myTX" proxy-target-class="true"/>
  <aop:aspectj-autoproxy/>
...
 <beans profile="prod" >
<transaction managers, httprequests and such > 
</beans>
<!-- end of production beans -->
<!-- the following are for local testing -->
<beans profile="dev" >
</beans>
 <transaction managers and such > 
<!-- end of local testing beans -->
</beans>

我的春季版本是3.1。发布于spring-test,spring-transaction,spring.web.servlet,spring.web 当我使用servlet 2.5时,我不能使用更新的Spring MVC配置

当我尝试运行测试时,我得到以下异常:

  

引起:   org.springframework.beans.factory.BeanDefinitionStoreException:   工厂方法[public org.springframework.web.servlet.HandlerMapping   org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport.defaultServletHandlerMapping()]   抛出异常;嵌套异常是   java.lang.IllegalArgumentException:需要ServletContext   配置默认的servlet处理   引起:java.lang.IllegalArgumentException:ServletContext是   配置默认servlet处理所需的

我无法弄清楚:

  1. 为什么我没有明确地将它用于测试时需要servlet
  2. 如何在不使用spring mvc
  3. 的情况下为xml加载测试servlet上下文

1 个答案:

答案 0 :(得分:1)

将spring context config拆分为root(非web相关bean)和mvc(web相关bean)部分,或者创建一个单独的test config xml。