努力获得我的集成测试,使用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可用。
所以,坦白地说我很难过。我如何让两个插件都能很好地播放?我将不胜感激任何意见和/或,谢谢。