2011-09-14 1 views
0

私はSpring 3.1.0.M2を使用しています。いくつかのデータベース機能をテストするJUnit 4のテストを書いていますが、データソースの配線に問題があります。私のJUnitクラスでは、私は...Spring: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"オブジェクトは繰り返しnullです。私は2つの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」を使用していない理由があります。私のデータソースが正しく配線されない理由は何ですか?ありがとう、 - Dave

答えて

0

あなたの更新の提案のおかげで、しかし答えは、私はメンバーフィールドの前に

@Autowired 

を追加し忘れていたことが判明。私がそれをしたとき、すべてがうまくいった。 -

0

@ContextConfigurationでテストクラスの注釈を見逃したようです。あなたが何かを注入するために春をトリガーする注釈を逃した:


私はそれを持っていると思います。 だけ追加します。

  • @Injectまたは、
  • @Resourceや、あなたのテストケースでのSessionFactoryの変数宣言へ
  • @Autowired

を。

+0

私の応答を編集して、自分のJUnitクラスが適切なクラスを指す "@ContextConfiguration"注釈を既に持っていることを示しました。実際、上記のSessionFactory Bean生成メソッドが呼び出されていることを、ログを介して確認しました。他のアイデア? – Dave

+0

@Dave:私の変更された答えを見てください – Ralph

関連する問題