2012-08-30 58 views
0

我正在使用spring mvc3應用程序。Spring mvc3應用程序測試環境設置

當我想爲Dao組件做一些單元測試時遇到了一些問題。

這是在我的蝕應用結構:

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" /> 

彈簧context.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> 

彈簧dao.xml :

<bean id="postDao" class="com.king.dao.PostDao" /> 

這是我PostDao類:

public class PostDao extends SqlSessionDaoSupport{ 
    public Post query(int id) { 
     return getSqlSession().selectOne("com.king.model.PostMapper.selectById", id); 
    } 
} 

以上配置運作良好的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應用程序中找不到它。

所以我想知道如何讓我的測試工作?

回答

0

你是指單元測試還是集成測試?如果是這樣,我建議使用Spring Test模塊 - 它允許你定義一個特定的測試環境,你可以提供相關bean的真實或模擬實現。它與JUnit很好地集成在一起,並提供了許多在Spring環境中成功運行測試所需的腳手架。

相關問題