Spring mvc3应用程序测试环境设置
我在SpringMVC3应用程序下工作 当我想对Dao组件进行单元测试时,我遇到了一些问题 这是我在eclipse中的应用程序结构:Spring mvc3应用程序测试环境设置,spring,spring-mvc,spring-test,spring-test-mvc,Spring,Spring Mvc,Spring Test,Spring Test Mvc,我在SpringMVC3应用程序下工作 当我想对Dao组件进行单元测试时,我遇到了一些问题 这是我在eclipse中的应用程序结构: application build classes src org..... res jdbc.properties log4j.properties www resources css js
application
build
classes
src
org.....
res
jdbc.properties
log4j.properties
www
resources
css
js
WEB-INF
mybatis
config.xml
view
spring
servlet-context.xml
spring-contex.xml
spring-dao.xml
web.xml
servlet-context.xml:
<!-- web related config omitted -->
<import resource="spring-context.xml" />
<import resource="spring-dao.xml" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">.......</bean>
<context:property-placeholder location="classpath*:jdbc.properties" />
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="/WEB-INF/mybatis/config.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
上述配置在servlet容器中运行良好
然而,当我想在servlet环境中测试PostDao时,我遇到了一些问题
我试过这个:
public static main(String[] args){
ApplicationContext ctx = new ClassPathXmlApplicationContext("E:/application/www/WEB-INF/spring/servlet-context.xml");
PostDao pd = (PostDao) ctx.getBean("postDao");
Post p = pd.query(9);
}
然后我得到一个错误,“mybatis/config.xml”无法被建立
我知道这是由不同的运行环境造成的
在servlet上下文中,spring将找到“/WEB-INF/mybatis/config.xml”,但在java应用程序中,它找不到它
所以我想知道如何才能让我的测试工作 您是指单元测试还是集成测试?如果是这样,我建议使用Spring测试模块——它允许您定义一个特定的测试上下文,您可以在其中提供相关bean的真实或模拟实现。它与JUnit集成得很好,并提供了在Spring环境中成功运行测试所需的大量支架
public class PostDao extends SqlSessionDaoSupport{
public Post query(int id) {
return getSqlSession().selectOne("com.king.model.PostMapper.selectById", id);
}
}
public static main(String[] args){
ApplicationContext ctx = new ClassPathXmlApplicationContext("E:/application/www/WEB-INF/spring/servlet-context.xml");
PostDao pd = (PostDao) ctx.getBean("postDao");
Post p = pd.query(9);
}