1

CDI/WeldとJEEUnitを使用してjunitテストを試しています。起動時に次のメッセージが表示されます。

189 [main] INFO org.jboss.weld.Bootstrap - WELD-000101 Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously.

em.flush()後で、トランザクションがアクティブであると期待しているため、電話をかけるとEntitymanagerが失敗します。JUnitテストに使用できる軽量のトランザクション実装はありますか?

編集:

最終的にGuiceRunnerを使用しました。これは非常に単純です... http://fabiostrozzi.eu/2011/03/27/junit-tests-easy-guice/

4

2 に答える 2

2

単体テストでopenEJBを使用できます。これは、期待どおりに機能するはずです。

ただし、テストでトランザクション(別名「プラットフォームサービス」)が必要になるとすぐに、統合テストと呼び始めます。この場合、軽量のコンテナー上テストにはArquillianを使用することをお勧めし 独自のインフラストラクチャに対してテストし、実際のセットアップを使用することができトランザクション。

更新:あなたがすでにJEEUnitを使用していることを見落としました。それは私の答えをかなり時代遅れにします...

于 2012-07-10T06:16:10.297 に答える
2

INFOメッセージを通過するには、クラスパスにjta apiを設定する必要がありますが、実際には後で実際のトランザクションが実行されないという問題が発生します。

于 2012-07-10T15:25:25.913 に答える