2015-07-13 89 views
0

努力獲得我的集成測試,使用inmemdb-maven-plugin和maven-failsafe-plugin。inmemdb-maven-plugin和maven-failsafe-plugin數據庫表創建問題

基本上,我運行hibernate4-maven-plugin,它會生成一個SQL腳本,併爲需要運行集成測試的表創建語句。 (使用SQL腳本與inmemdb-maven-plugin很直接,所以我不會詳細說明)。我點inmemdb-Maven的插件生成的腳本,它會出現讀取這個沒有問題:

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
[INFO] Started embedded Derby database 
[INFO] Server has been started 
[INFO] Executing initialization scripts and loading data sets 
[INFO] Loading Script[target/schema.sql] 

然而,當Maven的故障保護,插件執行集成測試(S),它會出現無表可供選擇:

Caused by: java.sql.SQLException: Table/View 'MY_TEST_TABLE' does not exist. 
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) 
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source) 
    ... 71 more 
Caused by: ERROR 42X05: Table/View 'MY_TEST_TABLE' does not exist. 
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) 
    at org.apache.derby.impl.sql.compile.DMLModStatementNode.verifyTargetTable(Unknown Source) 
    at org.apache.derby.impl.sql.compile.InsertNode.bindStatement(Unknown Source) 
    at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source) 
    at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source) 
    at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source) 
    ... 65 more 

要確認這是事實,我複製創建MY_TEST_TABLE的SQL的部分,增加一條,作爲一個本地查詢:

Query query = em.createNativeQuery("create table my_test_table (" + 
     " id bigint generated by default as identity, "+ 
     " some_field bigint, " + 
     " another_field varchar(255), " + 
     " primary key (id))"); 

query.executeUpdate(); 

// Rest of integration test class 

然後錯誤消失了,因爲現在MY_TEST_TABLE可用。

所以,坦白地說我很難過。我如何讓兩個插件都能很好地播放?我將不勝感激任何意見和/或,謝謝。

回答

0

我遇到了同樣的問題。什麼修復了我的連接url從jdbc:h2:mem:picnicwms更改爲jdbc:h2:tcp://localhost:9092/mem:picnicwms