使用JUnit测试SSH框架的Service层和DAO层

JUnit可以对代码进行测试,可以在开发时对代码的正确性进行验证,后来演进出了TDD,测试先行。可现在很多项目使用SSH架构,Spring管理的Bean在JUnit中无法注入,而且频繁的进行单元测试会产生大量的垃圾数据,这是困扰开发人员的一大问题。

幸好Spring提供了一个类,用来集成JUnit进行Service层和DAO层的单元测试,它可以将Spring管理的Bean进行注入并在测试结束后控制Hibernate将数据回滚,这个类就是“AbstractTransactionalDataSourceSpringContextTests”。

下面是这个类的使用方法:

public class JUTest extends AbstractTransactionalDataSourceSpringContextTests
{
    //Service层Bean
    private MyService myServiceImpl;
    
    //重写父类的方法,进行Spring配置文件的初始化
    public String[] getConfigLocations()
    {
        String[] config = new String[] { "/spring/applicationContext.xml"
                , "/spring/test.xml"
                , "/spring/applicationContext-allbean-hibernate.xml" };
        return config;
    }

    //测试方法
    public void testService()
    {
        myServiceImpl.doService();
    }

    //Service层Bean的set方法,这里注意一定要加(@Qualifier("myServiceImpl"),不然会报一个bean重复的错误
	public void setMyServiceImpl(@Qualifier("myServiceImpl") MyService myServiceImpl)
    {
        this.myServiceImpl = myServiceImpl;
    }
}
写完后右键Run As JUnit就OK啦!

不过有一个问题,这样的测试只能测试会不会报错如果插入的数据有问题是测试不出来的,而且测试结束后数据会回滚,无法在数据库中看到测试数据,那咱么办呢?可以在这里写一个JDBC的查询逻辑,将数据查出来进行验证。

另外,貌似TestSuite中所有的TestCase都会加载一遍Spring配置文件,测试性能不是一般的跌眼镜。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值