2016-06-17 1 views
0

を開くことができません。ApplicationContextの中は、Springテスト(スポック)で動作する、ネストされたMyBatisの-config.xmlには、私はこのようなファイル構造を構成してい

Project/ 
     war/ 
      WEB-INF/ 
       applicationContext.xml 
       mybatis-config.xml 
       (both two xml files are under same directory:WEB-INF) 

MyBatisの設定ファイル。このようなXML:設定上

<!-- SqlSessionFactory --> 
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource" /> 
     <property name="typeAliasesPackage" value="com.domain.model" /> 
     <property name="configLocation" value="WEB-INF/mybatis-config.xml" /> 
    </bean> 

は、Webアプリケーションで動作し、私はこのようなスポックユニットテストを持っている:

@ContextConfiguration(locations = "file:war/WEB-INF/applicationContext.xml") 
public class SeniorPerWorkerMsgPusherTest extends Specification { 

    @Autowired 
    MyBatisMapper mapper 
    ..... 
} 
それを実行すると

、ブロー誤差はプリントアウトしてしまった:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in URL [file:war/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.io.FileNotFoundException: class path resource [WEB-INF/mybatis-config.xml] cannot be opened because it does not exist 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) 
    ... 124 more 
Caused by: java.io.FileNotFoundException: class path resource [WEB-INF/mybatis-config.xml] cannot be opened because it does not exist 
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172) 
    at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:407) 
    at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:381) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574) 
    ... 131 more 

質問は次のとおりです。 なぜ同じApplicationContextのWebアプリケーションとの仕事ではなく、春のテスト(スポック)で動作しますか?

+0

あなたのテストクラスは '@WebAppConfiguration(「戦争」)'と注釈を付けた場合はどうなりますか? –

答えて

1

テストのためのSpringコンテキストがresourcesフォルダにある必要があるためです。あなたは、リソースに設定をMyBatisのか、あなたのコンテキストに相対パスを使用しようとするあなたを移動する必要があります

@ContextConfiguration({"classpath*:applicationContext.xml", "classpath*:mybatis-config.xml"}) 
関連する問題