Java EEコードをテストするためのあなたの好みの方法を尋ねたいですか?
Java EE環境での単体テストのコーディングを支援しようとしているプロジェクトは3つしか見つかりませんでした:
だから私は疑問に思う、
どうもありがとう...
ユニットテストが意味する場合...ユニットテスト(ユニットを分離してテストする)の場合、EJB3.0は注釈付きであるため、実際には特定のフレームワークは必要ありません。 POJOであるため、特別なフィクスチャなしで比較的簡単にテストできます。
さて、統合テストや機能テストなど、他の何かを意味する場合は、yes、ツールは物事を助け、単純化することができます(しかし、あなたは本当に正しい用語を使い始めるべきです:)これがあなたが考えていることだと思います。
まず、 JUnitEE は死んでいて時代遅れのようで、EJB3.xに何かがあるかどうかさえわかりません。第二に、私は Java EE 5サポート of Cactus に感心せず、Cactusテストをデプロイする必要があるのは苦痛です(CactusはJ2EE 1.4には適していたと思いますが、今少し時代遅れです)。したがって、これにより Ejb3Unit が残ります。これは、特にアプリケーションを実際にデプロイせずに(はるかに高速に)コンテナ外テストを実行する場合に最適なオプションです。
in containerテストを実行したい場合は、実際に組み込みコンテナーを使用できます。現在の設定は、Java EE 5の場合でもGlassFishv3になります(間違っている可能性がありますが、最新のJBossリリースの開始時間にはかなりがっかりしているので、あまり注目されていません)。投稿を参照してください GlassFish Embedded Reloaded、ポケットにアプリサーバー サンプルコード(テストから使用できます)または v3組み込みGlassfishにmavenプラグインを使用 ( Mavenを使用)。
もう1つのオプションは、 Cargo を使用してアプリケーションをパッケージ化してデプロイし、デプロイされたアプリケーションに対していくつかのテストを実行することです(たとえば、SeleniumまたはBDDツールを使用)。これは、埋め込みAPIを提供しないコンテナーを使用してエンドツーエンドのテストを実行する場合に役立ちます。
したがって、最後の質問に答えるために、単体テストではなく、自分でモック/注入しないテストには、利用可能なツールを使用します。ただし、それらが私にできるいくつかのニーズをカバーしていない場合を除きます。今は考えないでください。
Java EE 6コンテナ(正確にはGlassfish v3)でJUnitに基づく統合テストを実行するという同じ問題に直面しており、多くのブラウジングと検索を行った後、自分のニーズに本当に合った解決策が見つからなかったので、自分で作成し、現在Google Codeで jeeunit として公開しています。
私はそれをテストフレームワークとは呼びません。それは実際には、JUnitとEmbeddedGlassfishの間の接着剤を提供するほんの一握りのクラスです。
一般的な考え方はCactusに似ており、テストはコンテナ内で実行され、外部からサーブレットによってトリガーされます。
jeeunitはJUnit4、Glassfish v3、CDIをサポートし、AntやMaven Surefireと同じように標準のXMLJUnitレポートを生成します(実際、レポートの生成にはAntのコードを再利用しました)。
ユニットテストに興味があるので、JUnitをお勧めします。コアクラスのメソッドを単体テストできます。 JUnitを使用して単体テストケースを作成するのが難しい場合は、おそらく設計はモジュール式ではなく、高度に結合されています。まず、コア機能に焦点を当て、JUnitを使用してテストします。
CDIアプリケーションをテストする必要があり、Webコンテナーの外部ですべてを実行するカスタムJUnitランナーを作成しました。
Java SEに適しており、WebアプリをテストするためのダミーのRequest、Session、およびConversationスコープもサポートしています。
小さくて速いので、ユニットテストがたくさんあるときに最適です。