使用Spring TestContext 测试框架,完美测试基于Spring的应用程序

80487608 2011-05-16

很长时间没有写过我的个人blog了,今天想记录一下刚刚使用SpringTestContext的心得。

至于SpringTestContext是个什么东西,各位只要google下就可以知道了。SpringTestContext为什么好?我只说一点,只使用Junit进行单元测试时,数据库现场容易遭受破坏,而SpringTestContext刚可以很好的做到单元测试后恢复现场,使用的是事务回滚机制。

经过本人的实际使用,现在简单说明一下SpringTestContext的使用:

1,加jar包:

如果你使用的是spring2.5.6,请把\spring-framework-2.5.6\dist\modules\spring-test.jarcopy到你的web项目的lib下。

2,写测试类,要从AbstractTransactionalJUnit4SpringContextTests继承。

packagecom.gxing.registration.service.impl;

importorg.junit.Test;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.context.ApplicationContext;

importorg.springframework.context.support.ClassPathXmlApplicationContext;

importorg.springframework.test.context.ContextConfiguration;

importorg.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;

importcom.gxing.registration.model.User;

importcom.gxing.registration.service.UserManager;

@ContextConfiguration

publicclassUserManagerImplTestextendsAbstractTransactionalJUnit4SpringContextTests{

@Autowired

privateUserManageruserManager;

@Test

publicvoidtestAdd(){

//ApplicationContextctx=newClassPathXmlApplicationContext("beans.xml");

//UserManagerum=(UserManager)ctx.getBean("userManager");

Useru=newUser();

u.setUsername("testService");

u.setPassword("testPassword");

userManager.add(u);

}

}

3,加上如测试代码中的Annotion,不明白就google,我不作解释,把这个权利留着给google老师。

3,编写UserManagerImplTest-context.xml文件,与上面的文件放到同一个包中

<?xmlversion="1.0"encoding="UTF-8"?>

<beansxmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<importresource="classpath:/beans.xml"/>

</beans>

4,把Juint4.4以上的jar包copy进web-info下的lib中。一定要注意是4.4以上的版本才支持。

5,RunasJuintTest,看看,测试通过了,但是我们的数据库里没有增加一个记录,看看控制台的Logger,你就明白了什么回事。

tip:(导入junit4的jar包myeclipse6.5自带的junit不行)

packagecom.bjsxt.service;

importorg.junit.Test;

importorg.springframework.beans.factory.annotation.Autowired;

importorg.springframework.test.context.ContextConfiguration;

importorg.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;

importcom.bjsxt.model.User;

//@ContextConfiguration(locations={"classpath:beans.xml"})

@ContextConfiguration(locations={"classpath:/beans.xml"})

publicclassUserServiceTest22extendsAbstractTransactionalJUnit4SpringContextTests{

@Autowired

privateUserServiceuserService;

@Test

publicvoidtestAdd22()throwsException{

System.out.println(userService.getClass());

userService.add(newUser());

}

}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gxinghuang/archive/2010/01/09/5166713.aspx

相关推荐