質問

なお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 このような(ご注意 EmbeddedDataBaseDataSource):

@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">こののを確認してください)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top