【发布时间】:2018-02-11 09:31:34
【问题描述】:
我已经使用 Springboot 和 Hibernate 创建了一个应用程序,我想为其配置单元测试。
首先这是 DAO 接口。
public interface OrderDetailsDao {
void createOrder(OrderDetails orderDetails);
void updateOrder(OrderDetails orderDetails);
void deleteOrder(OrderDetails orderDetails);
}
这是DAO接口实现
public class OrderDetailsDaoImpl extends HibernateDaoSupport implements OrderDetailsDao {
public void createOrder(OrderDetails orderDetails){
getHibernateTemplate().save(orderDetails);
}
public void updateOrder(OrderDetails orderDetails){
getHibernateTemplate().save(orderDetails);
}
public void deleteOrder(OrderDetails orderDetails){
getHibernateTemplate().delete(orderDetails);
}
}
然后我创建了一个如下的测试类
@RunWith(SpringJUnit4ClassRunner.class)
public class OrderDetailsDaoTest {
OrderDetails orderDetails = new OrderDetails();
@Autowired
OrderDetailsDao orderDetailsDao;
@Test
public void testCreateOrder(){
orderDetails.setValue(101.91);
orderDetailsDao.createOrder(orderDetails);
}
}
我已将 application.properties 文件放在 test 和 src 目录的资源中。
我尝试运行这个单元测试用例,但由于以下错误而失败:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.abdul.epl.repo.OrderDetailsDao' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
那么我能知道为 DAO 层配置单元测试的最佳方法吗?
【问题讨论】:
-
您没有分享足够的关于您的应用程序的信息。
OrderDetailsDaoImpl在哪里配置为 Spring bean?您是否希望通过组件扫描或@Configuration类上的@Bean方法找到它? complete minimal example 会让你的问题更清楚。
标签: java hibernate spring-boot junit