关于spring3集成hibernate进行junit测试的错误总结

5 篇文章 0 订阅
1 篇文章 0 订阅
[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]

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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值