2017-02-08 30 views
1

我有一個要求,其中在我有使用一個內存數據庫來測試在生產代碼一個DAO Java類。 DAO使用不同的連接配置執行插入操作。配置在存儲器或嵌入式數據庫來測試產品代碼

我試過配置HSQL附帶了春天,但看起來像它需要的DAO生產代碼中的程序化配置的設置,它的工作,但我不能改變生產代碼的嵌入式數據庫。有人可以建議我配置一個嵌入式數據庫來通過junit測試我的生產DAO代碼。

我嘗試這樣配置:

@Before 
public void setUp() 
{ 
    db = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.HSQL).addScript("create-table.sql").addScript("insert-data.sql").build(); 
} 

但是這上面的代碼是在我的JUnit。如果沒有上述代碼,我看不到配置內存數據庫的方法。我的生產環境中無法使用此代碼。如何在不更改生產代碼的情況下配置內存數據庫。

+1

不清楚你嘗試過什麼,但什麼都不起作用,但是你可以爲單元測試設置不同的spring context,這可能會解決你的問題。 –

+0

我用我試過的配置更新了這個問題。 – sharath

回答

0

我創建了一個TestConfig作爲我junits我的Spring配置文件,並配置有兩個bean:

  1. EmbeddedDatabase豆返回嵌入式數據庫。

    @Bean 
    @Profile("test-profile") 
    public EmbeddedDatabase embeddedDatabase() 
    { 
        return new EmbeddedDatabaseBuilder().setName("Derby").setType(EmbeddedDatabaseType.DERBY).addScript("schema.sql").build(); 
    } 
    
  2. 然後一個用於從上面創建的數據庫中獲取連接的bean。

    @Bean 
    @Profile("test-profile") 
    public Connection connection() throws SQLException 
    { 
        return embeddedDatabase().getConnection(); 
    } 
    

    我的產品代碼從Spring的ApplicationContext獲取Connection對象。所以我將我的junit配置爲使用我的TestConfig運行,以便將生產代碼拉入嵌入式數據庫連接對象並傳遞給它。測試通過了。

相關問題