我在一個使用JDBC連接到h2數據庫的maven項目中編寫了幾個JUnit測試類。 我有8個測試類。使用h2數據庫的JUnit測試表現奇怪
- 當我的IntelliJ運行
All tests
,我有一個JDBC錯誤(在最後的測試類:WorkspaceTest.java):
org.h2.jdbc.JdbcSQLException: Table "WORKSPACE" not found; SQL statement:
(如果你想完全蹤跡,我會說,但它有點長)。
note:所有7個其他測試類都通過了。
當我的IntelliJ單獨運行每個測試,他們都通過,由1 1
當我運行
mvn clean install
測試,我得到一個構建失敗,與錯誤(在最後測試類:OWSContextTest.java):
update(org.orbisgis.server.mapcatalog.OWSContextTest): Table "FOLDER" not found; SQL statement:
note:所有其他7個測試類都通過了。
- 當我用mvn(
mvn -Dtest=OWSContextTest test
)單獨運行此測試時,測試通過。
類都應該是獨立的,在他們每個人我有一個@BeforeClass
而下降數據庫中的測試,然後創建它,最後填充它,並且@AfterClass
這降低了數據庫。
如果您需要其他任何東西,我會爲它編輯。 我真的不知道這個行爲的原因。
感謝您的幫助。
編輯:我剛剛在IntelliJ上運行了All tests
約10次,並且它工作了大約6次,並且失敗了4次相同的錯誤。不知道我是否可以真正相信intelliJ測試機制。我試了更多的東西: 我跑了7我的8個測試類,所有8個(我一起跑了1 2 3 4 5 6 7,然後2 3 4 5 6 7 8,然後...)他們都通過了(所有7個組合中的8個)
如果您收到「找不到表格」錯誤,則很有可能數據庫爲空(不包含表格和數據)。什麼是您的數據庫URL?如果它是內存數據庫,則需要確保數據庫已初始化(創建表)。 –
數據庫URL是jdbc:h2:./target/testdb。 我明白,問題來自表未創建,但我不明白爲什麼他們沒有創建。正如我所說,如果我運行測試1 1,他們都通過。我只是試圖運行除一個之外的所有(所有8個可能性),並且每次都通過。 – Saffron
@Thomas Mueller是否有可能因爲連續數次連接到我的數據庫,H2會阻塞最後一個? – Saffron