0

NetBeansとGlassFish3.0.1を使用してEJB3アプリケーションを作成しています。JUnitを介して実行され、埋め込まれたGlassFishを利用するユニットテストをいくつか作成しました。これらのテストを開発マシンで(つまりNetBeans内から)実行するときはいつでも、それはすべて問題ありません。

ここで、ハドソンにそれらのテストを行わせたいと思います。現時点では、リソース(この場合はJPA永続性ユニットへのデータソース)のルックアップエラーで失敗しています。

[junit] SEVERE: Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method
[junit] java.lang.RuntimeException: javax.naming.NamingException: Lookup failed for 'mvs_devel' in SerialContext

周りを検索してこれについて学ぼうとした後、これは組み込みのGlassFishがリソースで構成されていないことに関連していると思います。つまり、domain.xmlファイルがありません。右?

2つの質問:

  1. 開発ボックスのNetBeansで動作するのはなぜですか?NetBeansはバックグラウンドでどのような魔法を実行しますか?
  2. ファイルはどのように提供すればよいですか?ハドソンボックスに埋め込まれたGlassFishはどこでそれを期待しますか?

Hudsonは、同じAntビルドスクリプト(NetBeansによって作成された)を使用しています。

instanceRootとEmbeddedFileSystemBuilderに関するこの投稿を読みましたが、十分に理解していません。これはすべてのテストケースに必要ですか(Emb。GFはテスト対象のBeanごとに開始/停止されます)?これはEJBContainer.createEJBContainer()の一部ですか?繰り返しますが、NetBeansでテストを実行するときに、これを行う必要がないのはなぜですか。

更新 Peterのアドバイスに従って、確認できます。ハドソンが構成されているのと同じプロパティを使用して、チェックアウトしたばかりのコードのコピーでantを実行すると、テストが実行されます。

4

1 に答える 1

1

10-1 IDEは、正常に実行するか単体テストを実行するかに応じてパスをスワップインおよびスワップアウトする傾向があるため、これはクラスパスの問題です。

SCMからチェックアウトしたばかりのバージョンからコマンドラインでテストを実行してみてください。同じエラーが発生する可能性があります。ローカルマシンでのデバッグは、リモートマシンよりもはるかに簡単です。

コマンドライン(別のディレクトリ)で確実にビルドできたら、ハドソンに移動します。

于 2010-09-15T13:45:43.140 に答える