2011-11-09 18 views
0

Hibernate Search 3.4(Hibernate 3.5.4上)を使用するSpringベースのシステムがあります。統合テストはSpringによって管理され、@Transactional注釈が付いています。現時点では、テストデータ(インデックスに登録されるエンティティ)はLiquibaseスクリプトによって読み込まれ、Spring統合を使用します。管理が非常に面倒です。Hibernate Search統合テスト用のテストデータの管理方法

私の新しい解決策は、テストデータをSpring Beanとして定義し、リソースとして名前で配線することです。この部分は動作します。

私はこれらの豆をテストケース(およびテストメソッド自体)のsetUpメソッドで永続化および索引付けしようとしましたが、失敗しました。彼らはDBにうまく行きますが、私はそれらをインデックスに登録することはできません。 FullTextEntityManager(flushToIndexes)でindex()を呼び出そうとしましたが、createIndexer().startAndWait()を試しました。

他に何ができますか? また、HSをテストするオプションがあるかもしれませんか?

は私の新しいソリューションは、春の豆とワイヤとして定義されたテストデータを持っている リソースとして、名前である

答えて

1

事前にありがとうございました。この部分は動作します。

は、単体テストのような不思議な設定です。正直言って、私はあなたがこれをどうやっているかを確かめるのではない。

検索では、メモリ内のデータベース(H2)がLucene RAMディレクトリとともに使用されます。このような設定の利点は、テスト間の依存関係を避けることが迅速かつ簡単であることです。

私は、これらの豆が持続し、私のテストケース のセットアップ方法で(及び試験方法そのものに)インデックス付け持つようにしようとしたが、私は失敗しました。彼らは をDBに入れてもうまくいきますが、インデックスを取得できません。

自動インデックス設定が有効で、テストデータの永続性がトランザクション内で発生している場合、機能するはずです。 Springと組み合わせてよくある間違いは、間違ったトランザクションマネージャを使うことです。 Hibernate Searchフォーラムには、この周りにたくさんのスレッドがあります。例えば、これはhttps://forum.hibernate.org/viewtopic.php?f=9&t=998155です。具体的な設定やコードの例は提供していないので、より具体的なアドバイスをするのは難しいです。

I)が(createIndexerを試みた。また、良好なアプローチであるstartAndWait()

。このような2つのテストエンティティではなく、データセット全体を挿入する場合は、この方法をお勧めします。この場合、dbunitのようなフレームワークを使用してtestdataを挿入し、手動でデータを索引付けすることができます。 createIndexer()。startAndWait()はそれに適したツールです。このすべてのロード/永続化/インデックス作成機能を共通のテスト基盤クラスに抽出することが最善の方法です。基本クラスは、すべてのSpringブートストラップを行う責任もあります。

また、より具体的なフィードバックを提供するには、質問を洗練させる必要があります。

+0

あなたの答えに感謝します。 –