将ehcache添加到DAO类后,Junit测试失败,无法在测试类中实例化DAO


疯子哥哥
2025-03-18 08:38:20 (1小时前)
  1. 我正在为我的项目添加ehcache,我有一个单元测试类,我的DAO运行正常,如果我在DAO上评论ehcache注释,如果我取消注释它就会失败,说它无法自动装入DAO ......

3 条回复
  1. 0# 谦成 | 2019-08-31 10-32



    你的junit没有加载你的spring conf xml。



    试试这个 :




    1. @ContextConfiguration(locations = {
      classpath:pathTo/applicationContext.xml”})

    2. </code>


    编辑:尝试删除限定符和/或在bean创建中添加name属性


  2. 1# 别烦我 | 2019-08-31 10-32



    第一个错误是因为你试图注入

    DragonBallUserDaoJpa

    代替

    DragonBallUserDao

    。为了能够添加缓存层,Spring在您的类上创建了一个代理。而这个代理实现了类的接口(

    DragonBallUserDao

    )然后委托实际班级(

    DragonBallUserDaoJpa

    )。



    检索bean时遇到同样的问题。由于代理仅实现接口,因此无法将其强制转换为实现。所以

    ClassCastException




    所以如果你在测试中这样做(你不需要限定符)




    1. @Autowired
      private DragonBallUserDao dragonBallUserDao;

    2. </code>


    它应该做的伎俩。



    另一个解决方案(但我认为它没有用)是强制Spring使用cglib来创建代理。这样,您的代理确实将延伸到具体类。你需要这样的东西:





    最后,你也可以摆脱界面,因为我非常怀疑你有很多这个DAO的实现。所以界面没用,只是添加噪音。删除它将强制Spring创建一个cglib代理,因为没有可用的接口。


登录 后才能参与评论