spring中JUnit4测试中,AbstractTransactionalJUnit4SpringContextTests报错关于javax.sql.DataSource
来源:互联网 发布:mac os u盘启动盘 编辑:程序博客网 时间:2024/06/03 18:37
今天使用AbstractTransactionalJUnit4SpringContextTests,进行spring集成的hibernat测试
package bijian.model.dao.hibernateImpl;import java.util.List;import javax.annotation.Resource;import org.hibernate.SessionFactory;import org.junit.Assert;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.annotation.Rollback;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.test.context.transaction.TransactionConfiguration;import bijian.model.bean.User;import bijian.model.dao.IUserDao;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations={"classpath:spring.xml"})@TransactionConfiguration(transactionManager="transactionManager",defaultRollback=true)public class UserDaoImplTests extends AbstractTransactionalJUnit4SpringContextTests{@Resource(name="userDao",type=UserDaoImpl.class) private IUserDao userDao;@Rollback(false)@Testpublic void testInsert(){//T entityUser user=new User();user.setUsername("jazywoo");user.setNickname("wujianzhi");user.setPassword("123456");userDao.insert(user);System.out.println(user.getUserID());Assert.assertNotNull("userID not null", user.getUserID());} }@Testpublic void testGetByUsername(){//String usernameUser user=new User();user.setUsername("jazywoo");user.setNickname("wujianzhi");user.setPassword("123456");userDao.insert(user);String username="jazywoo";User user2=(User) userDao.get(username);System.out.println(user.getUserID());Assert.assertNotNull(user2);} }
于是报错是
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire method: public void org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests.setDataSource(javax.sql.DataSource); nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [javax.sql.DataSource] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:601)at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)... 26 moreCaused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [javax.sql.DataSource] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:949)at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:818)at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:730)at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:558)... 28 more原因是找不到配合文件中的dataSource,由于集成的hibernate,使用的是hibernate.hbm.xml的配置信息,没有配置dataSource;
解决方法有两种,
一种是去掉AbstractTransactionalJUnit4SpringContextTests,不继承,可以直接测试,但是使用@Rollback(false)的时候,事件还是会回滚。
一种是是在appplicationContext.xml中配置上dateSource数据源,这时候使用@Rollback(false)的时候,事件才不会回滚,会写入数据库。
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="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.xsd"> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost/db_sentence" /> <property name="username" value="root" /> <property name="password" value="admin" /> </bean> <!-- 定义sessionFactory --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocations"> <value>classpath:hibernate.cfg.xml</value> </property> </bean> <!-- 定义事务管理器:此处的含义就是下面的事务管理器管理由sessionFactory创建的session --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- HibernateTemplate类是Spring提供给我们进行Hibernate持久层操作的类,它对增删查改方法进行了封装 --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="userDao" class="bijian.model.dao.hibernateImpl.UserDaoImpl"> <property name="hibernateTemplate" ref="hibernateTemplate"/> </bean> <bean id="userRelatedObjectDao" class="bijian.model.dao.hibernateImpl.UserRelatedObjectDaoImpl"> <property name="hibernateTemplate" ref="hibernateTemplate"/> </bean> </beans>
- spring中JUnit4测试中,AbstractTransactionalJUnit4SpringContextTests报错关于javax.sql.DataSource
- junit4和spring test测试之AbstractTransactionalJUnit4SpringContextTests详解
- 测试DataSource报javax.naming.NoInitialContextException错误
- Spring mvc中集成Junit4测试
- Spring mvc中集成Junit4测试
- 关于Spring中dataSource的配置
- 关于Spring中dataSource的配置
- Junit4测试报错
- spring中获取datasource
- spring 中配置 datasource
- Spring中配置dataSource
- Spring4+Hibernate5:报错Cannot unwrap to requested type [javax.sql.DataSource]
- javax.sql.DataSource接口
- javax.sql.DataSource接口
- javax.sql.DataSource
- spring中 使用JUnit4 测试 代码[模拟服务器启动]
- spring中datasource的配置
- Spring中数据库技术--获得DataSource
- C# DataTable 过滤重复数据
- 为oracle中表的数学添加唯一性约束
- 计算文件夹文件大小
- 06_标签
- 关于大于9的串口打开失败的原因
- spring中JUnit4测试中,AbstractTransactionalJUnit4SpringContextTests报错关于javax.sql.DataSource
- 可以根据自己输入的地址下载网页信息
- android实现从网上获取数据
- Web性能优化方案
- MyBatis动态SQL
- Android Intent 用法全面总结
- 全角半角相关转换
- map遍历
- 知识连接