JAX-RS を使用して REST サービス (EJB でもあります) を公開し、基礎となるデータを格納するために JPA を使用する単純な Java EE アプリの統合テストをセットアップしようとしています。外部コンテナ/アプリケーション サーバーを手動で設定する必要はありません。私は解決策を求めてここや Web で多くの検索を行った結果、GlassFish 3.1.2 Embedded を機能させるのに何週間も費やしてしまいました。セキュリティをテストするユーザーを作成します。ドラット!JBoss AS 7 を見ましたが、組み込み製品はサポート対象外のようです。次に、サーブレット コンテナー (Jetty、Grizzly、Simple) を使用して自分で作成し、Jersey を直接実行してみました。(私は最終的に、EclipseLink と Derby 組み込みを追加することを計画していました。) これらはすべて、最も基本的な JUnit テストをセットアップして実行する際に、予期せぬ困難な課題を提示しました。たとえば、Jetty で JAX-RS を実行できませんでした。たとえば、Grizzly には HTTP Basic 認証がありませんでした。ダブルドラ!次に、Arquillian を調べましたが、コンテナー アダプターに JBoss AS 7 がリストされていませんでした。
2 つの質問があります。1) これは、私が予想していたよりもはるかに難しいようです。それが私だけではないと仮定した場合 (お願いします、それは私だけではありません!)、なぜそんなに難しいのでしょうか? 30 以上の API を備えた Java EE スタック全体が、正しく積み上げるのが非常に難しく、1 つの瓶に押し込められないトランプの家であるかどうか疑問に思っています。または、テストを実行する前に開始する外部 (「ローカル」?) コンテナーで統合テストを行うことを好む人もいるかもしれません。
質問 2): さまざまな種類のテスト コンテナー構成の標準的な用語は何ですか? 矛盾しているようです。たとえば、http://mvnrepository.com/artifact/org.jboss.arquillian.containerには「リモート」、「埋め込み」、「マネージド」、および「ローカル」がリストされていますが、それでも「コンテナ内」および「アウト」が見つかりました。 -of-container」テストは別の場所で言及されています。
上記の失敗の詳細についてスペースを使用するのではなく、この経験が私に伝えようとしていることに耳を傾ける準備ができているので、何がうまくいったかを聞いていただければ幸いです. 前もって感謝します!