关于注解的方法我这里给个网址,不要被E文吓到,其实很好看懂的.
http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/testing.html
哈哈,如果用的是spring老的框架的话会出现NoSuchMethodError (BeanUtils.instantiateClass) running JUnit4 tests in Eclipse 类似的错误的,看了下社区他们提交的错误,意思就是不支持老版本的,需要换spring3的jar包才行.给个网站,大家看下.
http://forum.springsource.org/showthread.php?125062-NoSuchMethodError-(BeanUtils-instantiateClass)-running-JUnit4-tests-in-Eclipse
这个方法用不成,只能使用过时的方法进行测试了,给个代码.
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(); } }
这个是个junit的测试用例,不过这里有个问题,我没怎么去搞,就是junit自动对数据回滚了,就算设置了@TransactionConfiguration(defaultRollback=false)也不行.
没办法又用了一个方法,上代码
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);
用这种方法可以插入数据,而且不会回滚.
大家有问题或者意见的可以交流.