web-dev-qa-db-ja.com

EJB3 / JPAのユニットテストに最適な現在のフレームワーク

主にステートレスセッションBeanとバッチジョブであるEJB3/JPAを使用して新しいプロジェクトを開始します。私は過去に標準のJava webappsでJUnitを使用しましたが、かなりうまく機能しているようでした。EJB2のユニットテストは面倒で、呼び出しを行うためにJBossなどの実行中のコンテナーが必要でした。 EJB3/JPAで作業するので、これらのテストの作成と実行にどの企業が使用しているのかを知りたいのですが、JunitとJMockはまだ関連性があると見なされていますか、それとも他の新しいフレームワークが登場しているのでしょうか。調査しますか?

20
Dark Castle

私見、はい、彼らはまだ関連しています。

EJB3を使用すると、通常のPOJOのように、または組み込みEJBコンテナを使用してマネージドBeanとしてEJBをテストできます。

JPAの場合と同じように、テスト用にJPA実装を埋め込んでインメモリデータベースを使用するか、データ層を完全にモックすることができます。

前回のEJBプロジェクトでは、組み込みEJBコンテナが十分に成熟していないため、EJBをテストするために少し グルーコード を記述しましたが、今度は組み込みEJBコンテナ+ JUnitを使用します。

いくつかのリソース

しかし、他にも簡単に見つけられるものがたくさんあります

11
ewernli

ユニットテストの場合、JUnit、TestNG、およびお気に入りのモックフレームワーク( EasyMockMockito =、 PowerMockJMockitJMock )。

統合テストの場合、テストから埋め込み可能なコンテナー(JBoss、OpenEJB、GlassFish v3)を開始/停止できます。または、 Arquillian 、Java EEアプリケーションの統合テスト用のごく最近の新しいプレーヤー:

Arquillianプロジェクトの使命は、開発者がJavaアプリケーション(おそらくエンタープライズアプリケーション)の幅広い統合テストを作成するために使用できる単純なテストハーネスを提供することです。テストケースは次のようになります。コンテナー内で実行され、テスト対象のコードと一緒にデプロイされるか、コンテナーと調整して、デプロイされたコードのクライアントとして機能します。

開発者のビルド環境に不必要な複雑さをもたらすことを避けるために、Arquillianは使い慣れたテストフレームワーク(JUnit 4、TestNG 5など)と透過的に統合し、アドオンなしで既存のIDE、Ant、Mavenテストプラグインを使用してテストを起動できるようにします。

Java EE With Arquillian 1.0.0 Alpha 1 Releaseed および Arquillan スペースのテスト容易性の改善。興味深いIMOに見えます。

8
Pascal Thivent

Apache OpenEJB を選択できます。これは、TestNGに組み込むことができる軽量のEJB3.0実装です。

ここ ユニットテストにOpenEJB、TestNG、jMockItを使用するサンプルコードを見つけることができます。

3
Sunil Manheri

1つのオプションはSpringを使用することでもありますが、もちろん、アーキテクチャはランタイムでもSpringに基づいています。 Springが好きな理由は、JUnitテストケースで使用するコンテキストファイルに注釈を付けることができるため、テストフェーズで必要なモックデータとオブジェクトを簡単に挿入できるためです。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:test-context.xml"})
public class MyClassTest {

    @Autowired
    private MyClass myClass;

    @Test
    public void testMyMethod() {....}

しかし、とにかくSpringを使いたくないのであれば、これはまったく関係ありません:)一方、後でSpringから切り替えるのは非常に簡単です。

1
fish

Arquillianをお勧めします。 Arquillianを使用すると、通常のEJBまたはCDIBeanをテストするオプションがあります。埋め込まれた、管理された、またはリモートのEEコンテナーに対してテストを実行できます。 Arquillianプロジェクトは継続的に保守されています...

ただし、最初のarquillianテストを実行するのは必ずしも簡単ではありません。正しいarquillianバージョンとコンテナバージョンの依存関係を見つけるのに問題があるかもしれません。これについてのチュートリアルシリアルを投稿しました。しかし、私が宣伝することを疑わないように、リンクはここに掲載されていません。必要に応じて、「チュートリアルEJB3統合テストとArquillianpart1」をグーグルで検索できます。

1
Beijing Beijing