0

私は春の mvc3 アプリケーションで作業しています。

そして、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

サーブレット-context.xml:

<!-- web related config omitted -->
    <import resource="spring-context.xml" />
    <import resource="spring-dao.xml" />

春のコンテキスト.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);
    }
}

上記の構成は、サーブレット コンテナーでうまく機能します。

しかし、サーブレット環境で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」が見つかりませんというエラーが表示されます。

これは、実行環境の違いが原因であることはわかっています。

サーブレットのコンテキストでは、Spring は「/WEB-INF/mybatis/config.xml」を見つけますが、Java アプリケーションでは見つけられません。

では、どうすればテストを機能させることができるのだろうか?

4

1 に答える 1

0

ユニットテストまたは統合テストを意味しますか?その場合は、Spring Testモジュールを使用することをお勧めします。これにより、関連するBeanの実際の実装またはモックされた実装を提供できる特定のテストコンテキストを定義できます。これはJUnitとうまく統合され、Spring環境内でテストを正常に実行するために必要な多くのスキャフォールディングを提供します。

于 2012-08-30T07:47:30.330 に答える