0

JPAでEJB3を使用するJEE5アプリがあります。たとえば、私はいくつかの豆を持っています

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)

これらのサービスのテストを書きたいと思います。OpenEJB のような組み込み可能なコンテナーを使用できることはわかっていますが、JPA は Java SE で使用できるため、テストで使用できるのだろうか? 確かに私はすべてを持っていません

@PersistenceContext, @PersistenceUnit, @TransactionAttribute

利用可能な機能。だから私の質問は、これが試してみる価値があるかどうかです (手作りのトランザクション管理など)? または、埋め込みコンテナーを使用する必要がありますか? 私は統合テスト(実際のインメモリデータベースを使用)について話しているのであって、すべてのものをモックすることについてではありません。

編集:

埋め込みコンテナーでのテストは初めてなので、もう 1 つ。たとえば、Mockito のモックを @EJB 依存関係としてテスト対象の Bean に注入することは可能ですか? それとも、この設定では意味がありませんか?

4

2 に答える 2

3

Java SE / JPA を使用して、多くのことをテストできます。しかし、私たちが統合テストと呼んでいるものの大部分は、モックアップに膨大な労力を必要とするものであり、Arquillian や同様の助けがなければ実行できないものもあります。テスト対象に EJB トランザクション機能などを含めますか? そうであれば、可能な限り本番環境に近いトランザクション環境で動作するテストを実装する必要があります。ejb-testing-framework を使用することを強くお勧めします。

于 2012-05-29T20:16:09.800 に答える
0

サービス Bean をテストする場合は、EasyMock などのモック フレームワークを使用してエンティティ マネージャーをモックするのが良い方法だと思います。

セッション Bean に 2 つのコンストラクターを追加する必要があるだけです。1 つはデフォルトで、もう 1 つは必要な依存関係を備えているため、そこにモック オブジェクトを提供できます。

それが役に立てば幸い。

于 2012-05-29T20:16:24.060 に答える