2011-11-08 41 views
0

我正在使用JUNIT4 + Spring並寫了一個測試用例。我在JDBC模板中進行了連線,並對其進行了手動設置。但事實證明這是空的,當我使用該注入變量時,測試正在拋出空指針異常。這裏有什麼問題?springjunit4classrunner測試用例拋出空指針

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "classpath:applicationContextTest.xml" }) 
@TransactionConfiguration(defaultRollback = true) 
@Configurable 
public class WriterTest { 


    private JdbcTemplate utilityJdbcTemplate; 

    public void setUtilityJdbcTemplate(JdbcTemplate utilityJdbcTemplate) { 
     this.utilityJdbcTemplate = utilityJdbcTemplate; 
    } 



    @Test 
    @Transactional 
    @Rollback(true) 
    public void testHappyPath() { 
     Assert.assertNotNull(utilityJdbcTemplate); 

    } 
} 

這裏測試失敗,因爲utilityJdbcTemplate爲空。爲什麼?

+0

不知道如何來診斷問題W/O看到相關的配置或代碼;顯示的代碼沒有理由使其*不*爲空。 –

+0

我自己找到了答案。感謝您試圖幫助我。 http://stackoverflow.com/questions/4133608/spring-junit4-manual-auto-wiring-dilemma – Shiv

+0

很高興你的工作:) –

回答

2

「總得自動連線」:

@Autowired 
private JdbcTemplate utilityJdbcTemplate; 
+0

號Autowire不工作。它不是那麼直接。我嘗試過這個。答案就在這裏。 http://stackoverflow.com/questions/4133608/spring-junit4-manual-auto-wiring-dilemma。我只是不想刪除這個問題,因爲它會幫助別人 – Shiv

+0

應該工作。您的測試不需要'@ Configurable'。 '@ Autowired'和'@ Resource'可以使用'@RunWith(SpringJUnit4ClassRunner.class)'和'@ ContextConfiguration'。工作了許多次.. – tolitius