我想为Dao类编写一个JUnit测试。 dao不需要任何保存方法,因为它仅读取一些数据。
测试正在使用HSQLDB,我需要先插入一些测试数据。因为我不想编写代码只是为了使测试运行,所以我将DaoImpl类扩展为具有save方法。
现在,我想@Autowire DaoTestImpl类,但发现类型为[…]的No合格bean因依赖性错误而被发现。
我在src / main中的设置如下所示:
interface Dao ...
@Repository("Dao") class DaoImpl implements Dao ...
对于src / test中的测试,我有了新类:
@Repository("DaoTestImpl") class DaoTestImpl extends DaoImpl
在JUnit测试中,我正在使用
@Autowired
@Qualifier("DaoTestImpl")
private DaoTestImpl daoTestImpl;
自动接线扩展另一个Bean的Bean时出现问题吗?如果DaoTestImpl类正在实现接口,Spring将找到合适的Bean。但是在这种情况下,我无法测试DaoImpl类。
最佳答案
您需要将接口声明为字段,并使用实现的类的名称添加限定符。然后它将按预期自动布线。
该代码将如下所示:
@Autowired
@Qualifier("daoTestImpl")
// The interface
private Dao dao;