2011-01-27 14 views
4

私はすでにそれを見つけましたが、依存関係を注入したオブジェクト(EJB 3.0)を嘲笑することについてはちょっと難しいようです。注釈付きのEJBをモックする方法は?

public class MyTestBean 
    { 
    @EJB 
    ILoginService mLoginService; 
    public void doLogin() { 
     if (!mLoginService.login(name, pass)) { 
     // fehler 
    } 
    } 

私はLoginService.login(名前、パス)がtrueを返すことがしたいのOpenEJBでテストを実行しています。 LoginService Beanをモックする方法はありますか?

(現在ログイン-Methodeのは、私がテスト中にエミュレートすることはできませんいくつかのJAAS-のものを使用しています。)

答えて

3

はMockitoを見てすることができます。あなたはsetterでapply @EJBアノテーションを実行し、テストでmocked LoginServiceをインジェクトすることができます。

1

もう1つの方法は、単にILoginServiceインターフェイスの2番目の実装を提供することです。この2番目の実装はモックですが、特別なモックライブラリやサポートは必要ありません。

この実装は特別なソースフォルダで、通常はtestと呼ばれます。次に、通常のビルドではこのテストフォルダが無視されるように展開スクリプトをビルドします。単体テストを行い、テストのためにアーカイブをビルドするときは、テストソースフォルダのMock実装を明示的にインクルードします。

+0

私の質問はちょっと間違っていたので、私はあなたの答えを探していたのはかなり適しているようです。 MyTestBeanでテストを実行したかったのです。 MyTestBean私はIMyTestBean mContext.lookup( "MytestBeanLocal")によってのみアクセスします。 - 今、私は自分の設定をどこまで調整するのか見ています。サービスBeansはすべて注釈が付けられているので、模擬と実際の実装に同じ注釈を使用し、テスト環境または本番環境に応じてそれらを除外してください。 – justastefan

関連する問題