Pengaturan lingkungan pengujian aplikasi mvc3 pegas

Saya bekerja di bawah aplikasi spring mvc3.

Dan saya menemui beberapa masalah ketika saya ingin melakukan beberapa pengujian unit untuk komponen Dao.

Ini adalah struktur aplikasi saya di 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-konteks.xml:

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

konteks-musim semi.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>

pegas-dao.xml:

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

Dan ini kelas PostDao saya:

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

Konfigurasi di atas berfungsi dengan baik di wadah servlet.

Namun ketika saya ingin menguji PostDao tanpa lingkungan servlet, saya menemui beberapa masalah.

Saya mencoba ini:

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

Lalu saya mendapatkan error, "mybatis/config.xml" tidak dapat ditemukan.

Saya tahu ini disebabkan oleh lingkungan lari yang berbeda.

Dalam konteks servlet, spring akan menemukan "/WEB-INF/mybatis/config.xml", tetapi ketika berada dalam aplikasi Java, ia tidak dapat menemukannya.

Jadi saya bertanya-tanya bagaimana caranya agar pengujian saya berhasil?


person hguser    schedule 30.08.2012    source sumber


Jawaban (1)


Apakah yang Anda maksud adalah pengujian unit atau integrasi? Jika demikian, saya akan merekomendasikan menggunakan modul Spring Test - ini memungkinkan Anda untuk menentukan konteks pengujian tertentu di mana Anda dapat memberikan implementasi nyata atau tiruan dari kacang yang relevan. Ini terintegrasi dengan baik dengan JUnit dan menyediakan banyak perancah yang Anda perlukan agar berhasil menjalankan pengujian dalam lingkungan Spring.

person TrueDub    schedule 30.08.2012