【问题标题】:Spring: Trouble wiring up a datasource in a Junit testSpring:在 Junit 测试中连接数据源时遇到问题
【发布时间】:2011-11-17 09:50:32
【问题描述】:

我正在使用 Spring 3.1.0.M2。我正在编写一些 JUnit 4 测试来测试一些数据库功能,但是我在连接我的数据源时遇到了麻烦。在我的 JUnit 课程中,我有……

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader=AnnotationConfigContextLoader.class, 
    classes={DataSource.class, WebLeadsDAOImpl.class})
public class TestDB {
...
@Qualifier("mycoSessionFactory")
private SessionFactory sessionFactory;

/**
 * Using a single lead lookup should speed up our testing queries.
 * <p>
 * The lead is is 8104051
 * </p>
 */
@Before
public void prep() { 
    assertNotNull(sessionFactory);
    ...
}

但“sessionFactory”对象反复为空。这是我尝试配置它的方式……

@Lazy
@Component
@PropertySource("classpath:oracle.properties")
public class DataSource {
…

@Bean(name="mycoSessionFactory")
public SessionFactory sessionFactory() throws Exception {
   final SessionFactory sessionFactory = new AnnotationSessionFactoryBuilder()
        .setDataSource(dataSource())
        .setHibernateProperties(databaseProperties())
        .setPackagesToScan("com.criticalmass.systems.leadsmonitor.domain")
        .setSchemaUpdate(false)
        .buildSessionFactory();
   return sessionFactory;
}

我不只使用“@Autowired”的原因是因为我有两个 SessionFactory bean。任何想法为什么我的数据源没有正确连接?谢谢, - 戴夫

【问题讨论】:

    标签: spring junit


    【解决方案1】:

    您似乎错过了通过@ContextConfiguration 注释您的测试类。


    我想我知道了:你错过了触发 Spring 注入某些东西的注释。 只需添加:

    • @Inject 或者,
    • @Resource 或者,
    • @Autowired

    到你的测试用例中 sessionFactory 的变量声明。

    【讨论】:

    • 我编辑了我的回复以显示我的 JUnit 类已经有指向适当类的“@ContextConfiguration”注释。事实上,我已经通过日志验证了上面列出的 SessionFactory bean 生成方法正在被调用。还有其他想法吗?
    【解决方案2】:

    感谢您的更新建议,但答案是我忘记添加了

    @Autowired
    

    在成员字段之前。当我这样做时,一切都很好。 -

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-19
      • 2023-03-03
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2017-08-31
      相关资源
      最近更新 更多