关于spring3集成hibernate进行junit测试的错误总结
程序员文章站
2022-05-25 10:30:56
...
[size=large]今天对框架功能进行整合,用的是spring2.5的框架,本来想换新的,但是公司不让,没办法,需要对整合后的功能进行测试,拿了个spring-test.jar包测试,本来想用注解方式进行测试的,奈何不给力,没办法只能使用AbstractTransactionalDataSourceSpringContextTests这个过时的类进行测试了.[/size]
关于注解的方法我这里给个网址,不要被E文吓到,其实很好看懂的.
[url]http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/testing.html[/url]
[size=large]哈哈,如果用的是spring老的框架的话会出现[color=red]NoSuchMethodError (BeanUtils.instantiateClass) running JUnit4 tests in Eclipse [/color]类似的错误的,看了下社区他们提交的错误,意思就是不支持老版本的,需要换spring3的jar包才行.给个网站,大家看下.[/size]
[url]http://forum.springsource.org/showthread.php?125062-NoSuchMethodError-(BeanUtils-instantiateClass)-running-JUnit4-tests-in-Eclipse[/url]
[size=large][color=red]这个方法用不成,只能使用过时的方法进行测试了,给个代码.[/color][/size]
[size=large]这个是个junit的测试用例,不过这里有个问题,我没怎么去搞,就是junit自动对数据回滚了,就算设置了[color=red]@TransactionConfiguration(defaultRollback=false)[/color]也不行.
没办法又用了一个方法,上代码[/size]
[size=large]用这种方法可以插入数据,而且不会回滚.[/size]
[size=x-large][color=red]大家有问题或者意见的可以交流.[/color][/size]
关于注解的方法我这里给个网址,不要被E文吓到,其实很好看懂的.
[url]http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/testing.html[/url]
[size=large]哈哈,如果用的是spring老的框架的话会出现[color=red]NoSuchMethodError (BeanUtils.instantiateClass) running JUnit4 tests in Eclipse [/color]类似的错误的,看了下社区他们提交的错误,意思就是不支持老版本的,需要换spring3的jar包才行.给个网站,大家看下.[/size]
[url]http://forum.springsource.org/showthread.php?125062-NoSuchMethodError-(BeanUtils-instantiateClass)-running-JUnit4-tests-in-Eclipse[/url]
[size=large][color=red]这个方法用不成,只能使用过时的方法进行测试了,给个代码.[/color][/size]
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Test;
import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
import org.springframework.test.context.transaction.TransactionConfiguration;
import com.magus.message.dao.MessageDao;
import com.magus.message.service.MessageService;
import com.magus.message.vo.MessageFormBean;
@TransactionConfiguration(defaultRollback=false)
public class SpringHibernateTest extends AbstractTransactionalDataSourceSpringContextTests{
@Override
public String[] getConfigLocations(){
String[] config=new String[]{"/spring/applicationContext.xml","/spring/message-service.xml"};
return config;
}
@Test
public void test() {
MessageService ms=(MessageService) applicationContext.getBean("messageService");
SessionFactory sf=(SessionFactory) applicationContext.getBean("openplantSessionFactory");
Session s=sf.openSession();
Transaction tx=s.beginTransaction();
MessageDao md=(MessageDao) applicationContext.getBean("messageDao");
MessageFormBean sm=new MessageFormBean();
// Date d=sdf.parse((new Date()).toString());
sm.setMessageContent("wo ai shuangxi");
sm.setOtherPhones("12345678");
tx.begin();
ms.createMessage(sm);
tx.commit();
}
}
[size=large]这个是个junit的测试用例,不过这里有个问题,我没怎么去搞,就是junit自动对数据回滚了,就算设置了[color=red]@TransactionConfiguration(defaultRollback=false)[/color]也不行.
没办法又用了一个方法,上代码[/size]
public static void main(String[] args) {
args=new String[]{"/spring/applicationContext.xml","/spring/message-service.xml"};
BeanFactory factory=new ClassPathXmlApplicationContext(args);
MessageService ms=(MessageService) factory.getBean("messageService");
MessageFormBean sm=new MessageFormBean();
// Date d=sdf.parse((new Date()).toString());
sm.setMessageContent("wo ai shuangxi");
sm.setOtherPhones("12345678");
ms.createMessage(sm);
[size=large]用这种方法可以插入数据,而且不会回滚.[/size]
[size=x-large][color=red]大家有问题或者意见的可以交流.[/color][/size]
上一篇: Mybatis3+Spring3集成测试
下一篇: spring3 transaction