2011-09-14 122 views
0

我使用的是Spring 3.1.0.M2。我正在編寫一些JUnit 4測試來測試一些數據庫功能,但是我無法連接我的數據源。在我的JUnit類中,我有...春季:在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的豆類。任何想法爲什麼我的數據源連接不正確?謝謝, - 戴夫

回答

0

感謝您的更新的建議,但得到的答覆可謂是我忘記了成員字段前添加

@Autowired 

。當我這樣做時,一切都很好。 -

0

看起來像你錯過了@ContextConfiguration註釋你的測試類。


我想我有它︰你錯過了註釋,觸發Spring注入的東西。 只需添加:

  • @Inject
  • @Resource
  • @Autowired

一個SessionFactory的變量聲明在你的測試用例。

+0

我編輯了我的回覆,表明我的JUnit類已經有了指向相應類的「@ContextConfiguration」註解。實際上,我通過日誌記錄驗證了上面列出的SessionFactory bean生成方法正在被調用。任何其他想法? – Dave

+0

@Dave:看到我改變的答案 – Ralph