web-dev-qa-db-ja.com

Java EEコードをユニットテストするにはどうすればよいですか?

Java EEコードをテストするためのあなたの好みの方法を尋ねたいですか?

Java EE環境での単体テストのコーディングを支援しようとしているプロジェクトは3つしか見つかりませんでした:

だから私は疑問に思う、

  • Java EEコードの(j)ユニットテストを書くのに役立つフレームワークはありますか?
  • 組み込みJava jbossやglassfishv3などのEEサーバーを使用していますか?
  • 自分でモックアップして注射しますか?

どうもありがとう...

25
marabol

ユニットテストが意味する場合...ユニットテスト(ユニットを分離してテストする)の場合、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を提供しないコンテナーを使用してエンドツーエンドのテストを実行する場合に役立ちます。

したがって、最後の質問に答えるために、単体テストではなく、自分でモック/注入しないテストには、利用可能なツールを使用します。ただし、それらが私にできるいくつかのニーズをカバーしていない場合を除きます。今は考えないでください。

24
Pascal Thivent

Java EE 6コンテナ(正確にはGlassfish v3)でJUnitに基づく統合テストを実行するという同じ問題に直面しており、多くのブラウジングと検索を行った後、自分のニーズに本当に合った解決策が見つからなかったので、自分で作成し、現在Google Codeで jeeunit として公開しています。

私はそれをテストフレームワークとは呼びません。それは実際には、JUnitとEmbeddedGlassfishの間の接着剤を提供するほんの一握りのクラスです。

一般的な考え方はCactusに似ており、テストはコンテナ内で実行され、外部からサーブレットによってトリガーされます。

jeeunitはJUnit4、Glassfish v3、CDIをサポートし、AntやMaven Surefireと同じように標準のXMLJUnitレポートを生成します(実際、レポートの生成にはAntのコードを再利用しました)。

2
Harald Wellmann

ユニットテストに興味があるので、JUnitをお勧めします。コアクラスのメソッドを単体テストできます。 JUnitを使用して単体テストケースを作成するのが難しい場合は、おそらく設計はモジュール式ではなく、高度に結合されています。まず、コア機能に焦点を当て、JUnitを使用してテストします。

2
Sundar

CDIアプリケーションをテストする必要があり、Webコンテナーの外部ですべてを実行するカスタムJUnitランナーを作成しました。

http://jglue.org/cdi-unit/

Java SEに適しており、WebアプリをテストするためのダミーのRequest、Session、およびConversationスコープもサポートしています。

小さくて速いので、ユニットテストがたくさんあるときに最適です。

2
Bryn