Springの設定のための埋め込みH2データベース試験
-
19-09-2019 - |
質問
なおSpringの設定のための統合の試みを使用 組み込みh2データソース よびオプションでJUnit?
私の初めての試みと SingleConnectionDataSource 基本的にはたのですが、より複雑な試験が必要な場所での複数接続を同時に停止ます。と思いh2 tcpベースのサーバモード されるようになるとしても、これはどのように変動するという最高速通信モードのための仮組み込みデータベース。
その可能性とその利点?また、いまのテーブルの移植、データベース?
更新:ように指定し一部のコンクリートという重要な試験までを実施。
- のデータベースは一時的にメモリ
- に接続すべきではないと考えられtcp、スピードの要求に
- れていただければと思いま使うことがでデータベースツールの検査のコンテンツのデータベース中のデバッグ
- して定義するデータソースまたは使用できませんのアプリケーション-サーバデータソースユニット試験
解決
のご予約分かりませんがあった場合はツールできる検査データベースに、という簡単に解決するための組込みデータベース(3.1.x docs, 現在のdocs ることを可能とするために、HSQL、H2、ダービー.
使用H2、xmlの設定は、次のようになります:
<jdbc:embedded-database id="dataSource" type="H2">
<jdbc:script location="classpath:db-schema.sql"/>
<jdbc:script location="classpath:db-test-data.sql"/>
</jdbc:embedded-database>
希望の場合はJavaベースの構成でインスタンス化 DataSource
このような(ご注意 EmbeddedDataBase
広 DataSource
):
@Bean(destroyMethod = "shutdown")
public EmbeddedDatabase dataSource() {
return new EmbeddedDatabaseBuilder().
setType(EmbeddedDatabaseType.H2).
addScript("db-schema.sql").
addScript("db-test-data.sql").
build();
}
データベースのテーブルで作成される db-schema.sql スクリプト、それと実験データからの db-試験-データです。sql スクリプト
トなどのH2データベースドライバをクラスパス.
他のヒント
私は現在、を含試みspringconfig-ファイルとしてデータソース:
<bean id="database.dataSource" class="org.springframework.jdbc.datasource.LazyConnectionDataSourceProxy">
<constructor-arg>
<bean class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.h2.Driver" />
<property name="url"
value="jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=Oracle;TRACE_LEVEL_SYSTEM_OUT=2" />
</bean>
</constructor-arg>
</bean>
<!-- provides a H2 console to look into the db if necessary -->
<bean id="org.h2.tools.Server-WebServer" class="org.h2.tools.Server"
factory-method="createWebServer" depends-on="database.dataSource"
init-method="start" lazy-init="false">
<constructor-arg value="-web,-webPort,11111" />
</bean>
作成/ドテーブルを使うことによっexecuteSqlScript場をオーバー AbstractAnnotationAwareTransactionaltests.onSetUpBeforeTransaction, または SimpleJdbcTestUtils.executeSqlScript 適切な場所です。
を比較しま この投稿.
H2は、ビルトインの接続プールの実装にバンドルされています。次のXMLは、DBCP又はC3P0に追加の依存関係を導入する必要なく、データソースBeanとしてそれを使用する例を提供する:
<bean id="dataSource" class="org.h2.jdbcx.JdbcConnectionPool" destroy-method="dispose">
<constructor-arg>
<bean class="org.h2.jdbcx.JdbcDataSource">
<property name="URL" value="jdbc:h2:dbname"/>
<property name="user" value="user"/>
<property name="password" value="password"/>
</bean>
</constructor-arg>
</bean>
データベースは、Springアプリケーションコンテキストが閉じたときにDisposeメソッドを呼び出すことによってシャットダウンされます。
私はそれはユニットテストのために(のみ異なる接続文字列で)本番DataSource実装を使用するのが最善だと思います。
とにかく、より詳細な回答のための十分な情報を与えない「より複雑なテストに失敗しました」。
(セルフ広告:<のhref = "http://bozhobg.wordpress.com/2009/11/22/database-integration-testing-with-spring-jpa-junit-and-maven/" のrel = "nofollowをnoreferrer">こののを確認してください)。