2011-03-02 35 views
0

我有一個數據集(用xml定義),我使用PostGreSQL,使用JPA註釋的POJO和使用Junit的DbUnit進行測試。DBunit找不到在數據集上定義的表

當測試運行時,它會在數據庫中創建表和序列,但是當它開始使用表定義和列讀取數據集(xml)時,會觸發以下錯誤: org.dbunit.dataset.NoSuchTableException 「nameoftable」我試圖把所有大寫和正常大寫的表的名稱,它不會工作。該表是在公共架構中創建的,然後我試圖在xml中將該表定義爲public。「nameoftable」但它也不起作用....任何想法?

我試着用DUnit在以下版本中運行這個測試:2.2.2,2.3.0和2.4.5。

謝謝。

回答

1

使用DBUnit,您可以使用特定模式來測試,或使用完整數據庫(可能具有多個模式)。如果使用後者,則需要在導入/導出時在數據集中指定模式,否則可能會讓自己感到困惑;至少在PostgreSQL中,我還沒有嘗試過其他任何東西。

爲了執行此添加以下代碼中:

if (strSchema == null || strSchema.isEmpty()) { 
    conn = new DatabaseConnection(jdbcConnection); 
    conn.getConfig().setProperty(
      "http://www.dbunit.org/features/qualifiedTableNames", true); 
} 
else 
    conn = new DatabaseConnection(jdbcConnection, strSchema); 

最重要的一點是該屬性的設置;剩下的就是我用來建立與數據庫或模式相關的連接(基於從hibernate config XML中提取的模式名稱)。