2011-07-18 2 views
2

ユニットテストを作成したいくつかのステートレスセッションBeanがあります。これらのテストを埋め込みGlassFishコンテナで実行すると、プロジェクト用のデフォルトの永続ユニットが使用されます。これは、開発用のローカルMySQLデータベースです。しかし、単体テストを実行する際に、組み込みDerbyデータベースを使用して、単体テストがモックデータでデータベースを混乱させないようにします。 OpenEJBのでテスト用に異なるパーシスタンスユニットを使用する

そうのように、ハッシュマップを作成し、いくつかのプロパティを置くことによってpersistence.xmlの上書きすることが可能である:

Properties p = new Properties(); 
p.put(Context.INITIAL_CONTEXT_FACTORY,"org.apache.openejb.client.LocalInitialContextFactory"); 

p.put("movie-unit.hibernate.hbm2ddl.auto", "update"); 
p.put("movie-unit.hibernate.dialect", "org.hibernate.dialect.HSQLDialect"); 

context = new InitialContext(p); 

は、同一または上でユニットテストを実行するには、Sunの実装で可能な類似したものです別のデータベースですか?

編集:私はプロジェクトをビルドするためにAntを使用しています。テストを実行するときにテストpersistence.xmlをコピーし、デプロイメントのために通常のpersistence.xmlをコピーすることは可能でしょうが、これは厄介なようです。 Mavenへの切り替えはお勧めですか?

答えて

3

使用しているビルドツールの種類がわかりません。 Mavenので

実行時とテストリソース間の分離を持っている:

project 
|- src/main/resources 
|- src/test/resources 

src/test/resources中のものが最終的な成果物に含まれていないとだけテスト中のユニットテストプラグイン(シュア)で使用されていますビルドの段階。

ツールが何であれ、探している結果を達成するために、リソース間にこのような分離があることをお勧めします。

+0

Carlさん、プロジェクトをビルドするためにAntを使用しており、質問を更新しました。私は続けてこの分離を作成することができますが、Mavenがこれをサポートしていれば、以前の経験を持たずに切り替えることをお勧めしますか? – Laurens

+0

ビルドスクリプトが単純な場合は、できるだけ早く切り替えることをお勧めします。 Antは素晴らしいツールですが、Mavenのボックスの外にはたくさんのものがありますが、これはケースの1つです。 – carlspring

+0

私はまだデフォルトスクリプトを使用していたので、新しいMavenプロジェクトにソースファイルをコピーし、あなたのアドバイスと[link](http://pschyska.blogspot.com/2011/06/unit-testing-ejb- 31-with-netbeans-maven.html)私はこれを得ることができました。ありがとう! – Laurens

関連する問題