背景:项目底层NoSQL数据库类型切换,需要做单元测试
- 项目是Dynamic Web Project类型的,入口文件是在WEB-INF下的web.xml;
- 不能连接外网;
- 在基于Spring4下使用Junit4.12编写测试类测试DAO层接口。
Junit测试环境准备:
- 本次测试使用 @Configuration 加载所需配置文件
说明:spring-servlet.xml属于WEB-INF/web.xml加载的配置文件,但是使用file:xx的形式加载web.xml后,测试发现实际上是没有加载初始化spring-servlet.xml的。如果在测试类中注入spring-servlet.xml中的bean,会报找不到NoSuchBeanDefinitionException,所以需额外引入。spring-servlet.xml里引用其它的xml文件并不需要额外引入。
@Configuration(locations={"file:WebContent/WEB-INF/web.xml","classpath:spring-servlet.xml"})
-
WEB-INF下web.xml文件里的内容需要按照指定的约束语法按顺序排好
比如<filter>必须在<listener>之前、所有的<filter-mapping>必须在所有的<filter>之后。 -
XML文件检验形式
项目servlet api是2.5版本的,使用xsd而不是dtd校验,在跑测试类的时候报 "没有找到元素'web-app'" 。针对该现象折腾了好久都没有解决,最后使用了 2.3 版本的dtd文件作校验。如何使用本地dtd文件作校验请百度。
知道如何在无网络的情况下使用xsd形式校验XML文件的,请不吝留言,在此谢过!
按以上操作后,便可以正常跑测试类了。
网友评论