在我的項目中,我可以成功測試數據庫代碼。我使用Spring,Hibernate,HSQLDB,JUnit和Maven。使用spring,maven和hibernate進行單元測試時啓動HSQLDB的最佳方式是什麼?
問題是,目前我必須在運行測試之前手動啓動HSQLDB。使用正在使用的技術來自動啓動HSQLDB的最佳方式是什麼?
在我的項目中,我可以成功測試數據庫代碼。我使用Spring,Hibernate,HSQLDB,JUnit和Maven。使用spring,maven和hibernate進行單元測試時啓動HSQLDB的最佳方式是什麼?
問題是,目前我必須在運行測試之前手動啓動HSQLDB。使用正在使用的技術來自動啓動HSQLDB的最佳方式是什麼?
我假設有hsql
你指的是HSQLDB。爲JDBC驅動程序
配置數據庫的URL(休眠等),以HSQLDB的嵌入式存儲器基於版本:
jdbc:hsqldb:mem:myunittests
然後HSQLDB的進程內版本會自動啓動該商店的東西記憶。無需啓動任何外部服務器。
謝謝,剛開始使用HSQLDB。我正在遵循的教程已配置爲使用服務器。更改爲在內存中使用可解決我的問題。 – 2010-06-16 11:52:24
在JUnit,您可以創建一個使用以下注釋你的測試之前執行的方法:@Before
鏈接到關於它的JUnit的文檔是在這裏:JUnit FAQ - Test Fixtures
使用它in-process或in memory並在建立連接時從JDBC開始。
您也可以運行一個Ant任務<startdb>
:
https://forums.hibernate.org/viewtopic.php?f=6&t=984383&start=0
我自己使用hsql的內存數據庫來測試我的DAO。因此,我不需要連接到任何外部數據庫服務器或有任何網絡連接。
使用以下設置:
jdbc.driverClassName=org.hsqldb.jdbc.JDBCDriver
jdbc.url=jdbc:hsqldb:mem:DatabaseName
還包括
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="default_schema">test</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
這將允許您使用內存數據庫,並會自動創建從休眠數據庫表對象在執行測試之前。
希望這會幫助你。
注:
當你的DBA在一個數據庫中創建多個模式的「DEFAULT_SCHEMA」屬性使用。我已經看到了這個postgres,每個人都使用一個數據庫URL,但在這之下,每個應用程序都有獨立的模式。
通過使用默認模式屬性,它允許您將模式名稱保留在您的實體之外。如果您針對不支持模式的HSqlDB運行測試,並針對使用模式的數據庫進行部署,則此功能特別有用。有一個空值就意味着它默認返回到數據庫默認模式。
屬性'default_schema'對我造成了一個錯誤。刪除該屬性使其工作。 – 2016-10-22 17:13:46
謝謝。我做了改變。 – nishant 2017-09-19 15:53:06
目前我正在開發一個應用程序,其中需要內存數據庫用於自動化JUnit測試。以下文章回答了我很多問題:[http://tshikatshikaaa.blogspot.de/2012/09/junit-testing-spring-service-and-dao.html](http://tshikatshikaaa.blogspot。de/2012/09/junit-testing-spring-service-and-dao.html) – 2012-11-30 16:05:59