0

netbeans で JUnit を使用してステートレス Bean をテストしようとしています。この Bean は EntityManager を使用します。

@Stateless
public class myEjb{
    @PersistenceContext
    private EntityManager em;

    public MyResult getResult(){
        return em.find(...);
    }
}

次に、テストクラスを作成します。

public class myTest{
    private static EJBContainer ec;
    private static Context ctx;

    @BeforeClass
    public static void setUpClass(){
        ec = EJBContainer.createEJBContainer();
        ctx = ec.getContext();
    }
    ....
}

テストを実行すると、機能しません。次のメッセージが表示されます: Invalid resource : mydb__pm この行を実行するとエラーが発生します:

ec = EJBContainer.createEJBContainer();

エンティティ マネージャを削除して Bean を変更すると、機能します。それで、エンティティマネージャーに問題があるようです。私の persistence.xml ファイルは単純です。

<persistence version="2.0" ...>
  <persistence-unit name="MetisDemoPU" transaction-type="JTA">
    <jta-data-source>MyDb</jta-data-source>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
    <properties/>
  </persistence-unit>
</persistence>

最後に、EJB (エンティティーマネージャーを使用) を呼び出す JSF マネージド Bean を作成すると、それが機能します。

@ManagedBean
@RequestScoped
public class myManagedBean{
    @EJB
    private OfferEjb offerEjb;

    ...
}

どんな助けでも大歓迎です!

4

1 に答える 1

1

わかりました、問題の解決策を見つけました。JUnit を使用して、永続コンテキストでセッション Bean をテストできるようになりました。私は専門家ではないので、私の説明はおそらく完全ではありません。netbeans 7.2 には、テストに使用される組み込みのグラスフィッシュ サーバーがあります。domain.xml ファイルで jdbc パラメータを設定する必要があります。私のコンピューターでは、このファイルは

C:\Program Files\glassfish-3.1.2.2\glassfish\domains\domain\

jdbc 接続プールと jdvc jndi を追加するだけです。

この記事には詳細が含まれています。

于 2012-08-13T15:41:13.863 に答える