首页 新闻 搜索 专区 学院

ssh整合后测试dao

0
悬赏园豆:10 [已关闭问题]

项目有两个并行的source folder:src/test。两个包的结构相同。目的:测试AccountDAO

配置文件ApplicationContext.xml:

<!-- 配置事务管理bean -->
    <!--
        不使用hibernate而是使用JDBC,class应该选择:org.springframework.orm.jdbc.datasource.DataSourceTransactionManager
     -->
    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <!-- 真正的事务管理需要通过hibernate完成 ,所以要依赖注入一个sessionFactory-->
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>
   
    <!-- 事务管理的逻辑。即对哪些方法调用选择何种事务模型
        transaction-manager:真正管理事务的Java Bean
    -->
    <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="test*" propagation="REQUIRED"/>
            <tx:method name="get*" read-only="true"/>
            <tx:method name="find" read-only="true" />
        </tx:attributes>
    </tx:advice>
    <!-- 对哪些Java Bean 进行事务管理
        在实际的项目中进行事务管理的是业务对象business/service,即: pointcut="execution(* org.dfbz.myspring.business/service.*.*(..))
        猜测:肯定是有差异的,不过一些细节上的处理,相信不是很麻烦,暂时未证明。。
     -->
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* org.dfbz.mobile.dao.*.*(..))"/>   
    </aop:config>

配置文件Application-test.xml:

<bean id="TestAccountDAO"
        class="org.dfbz.mobile.dao.TestAccountDAO">
        <property name="accountDAO" ref="AccountDAO" />
    </bean>

测试类:

/**
 * 初始化IoC容器
 * @author liyuanyuan
 *
 * Oct 17, 2009
 */
public class BaseDAOTest extends TestCase {
    protected static ApplicationContext ctx;
    static{
        ctx = new ClassPathXmlApplicationContext(new String[]{"applicationContext.xml","applicationContext-test.xml"});
    }
}

/**
 * 测试AccountDAO
 * @author liyuanyuan
 *
 * Oct 17, 2009
 */
public class TestAccountDAO extends BaseDAOTest {
    private IAccountDAO accountDAO;
   
    public void setAccountDAO(IAccountDAO accountDAO) {
        this.accountDAO = accountDAO;
    }

    public void testShouldFindDefaultAccountById (){
        System.out.println(ctx.getBean("TestAccountDAO"));
        //accountDAO = (IAccountDAO)ctx.getBean("AccountDAO");
        System.out.println(accountDAO);
        //Account account = accountDAO.findById(1);
        //assertNotNull(account);
      }

}

我做测试的时候,IoC容器初始化没有报错,但是TestAccountDAO和accountDAO都是null。为什么呢?IoC容器已经初始化了呀!大家帮忙看下,直接把我的代码考去就可以了,不存在的类不是重点,做个mock就是了。

liyuanyuan的主页 liyuanyuan | 初学一级 | 园豆:195
提问于:2009-10-17 14:54
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册