Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc3应用程序测试环境设置_Spring_Spring Mvc_Spring Test_Spring Test Mvc - Fatal编程技术网

Spring mvc3应用程序测试环境设置

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

我在SpringMVC3应用程序下工作

当我想对Dao组件进行单元测试时,我遇到了一些问题

这是我在eclipse中的应用程序结构:

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);
}