0

プロジェクトの 1 つで統合テストを実行するために Arquillian を使用していますが、アプリケーションが WebLogic 12c R2 コンテナーにデプロイされると、ブラウザー テストを実行するために Arquillian Graphene/Drone によって間違ったポート番号が使用されていることがわかりました。テストによってブラウザが起動されると、WebLogic 管理対象サーバーに割り当てられたポートではなく、WebLogic 管理サーバーに割り当てられたポートが使用されます。これは、コンテナが HTTP 404 エラーを返し、テスト ケースが失敗することを意味します。

さまざまな Arquillian コンポーネントのコードを調べましたが、問題の根本原因を突き止めたと思います。この問題は、WebLogic 管理対象サーバーにアーカイブをデプロイし、Arquillianに戻すメソッドを含む「wls-common」モジュールのRESTUtilsクラスにあるようです。その後、Web ページにアクセスするために Arquillian Graphene/Drone によって使用されます。deploy(CommonWebLogicConfiguration config, Logger logger, Archive<?> archive)ProtocolMetaDataProtocolMetaData

このメソッド内には、オブジェクトHTTPContext httpContext = new HTTPContext(adminUrl.getHost(), adminUrl.getPort());の構築に使用される次のコード行が あります。ProtocolMetaDataこれは、管理対象サーバーに割り当てられたポートではなく、管理ポートが使用されていることを意味します。

根本原因を正しく特定したと仮定すると、この Arquillian コンテナ アダプタを WebLogic 12c R2 で使用できるとは思えません。このアダプタを間違って使用しようとしているのではないかと思います。

POM ファイル内の WebLogic コンテナ アダプタの Maven 依存関係は次のとおりです。

<dependency>
    <groupId>org.jboss.arquillian.container</groupId>
    <artifactId>arquillian-wls-remote-rest</artifactId>
    <version>1.0.0.Final</version>
</dependency>

私の arquillian.xml ファイルのエントリは次のとおりです。

<container qualifier="arquillian-weblogic-rest">
    <configuration>
        <property name="adminUrl">http://xxxx:7001</property>
        <property name="adminUserName">weblogic</property>
        <property name="adminPassword">xxxx</property>
        <property name="target">wls_server_1</property>
    </configuration>
    <protocol type="Servlet 3.0">
        <property name="host">xxxx</property>
        <property name="port">8080</property>
    </protocol>
</container>

私が使用しているWebLogicのバージョンは12.2.1です

私の質問は、このコンテナ アダプタを使用して WebLogic 12c R2 コンテナにデプロイしようとしているときに何か不足しているのでしょうか? 他の誰かがこのアダプターを正常に使用していますか?

WebLogic コンテナーは別のホストで実行されているため、リモート アダプターではなく REST アダプターを使用する必要があると思います。リモート アダプターでは、WebLogic コンテナーと同じホストで Arquillian テストを実行する必要があるようです。

4

1 に答える 1

1

クライアントとしてではなく、サーバーでクライアントとして実行する必要があるテストを実行しているように思えます。デフォルトでは、すべての Arquillian テストはアプリケーション サーバー内で実行されます。表示されているポートが使用されているのは、管理 URL を使用してデプロイをサーバーに投稿する必要があるためです。他の Web ブラウザーと同様に、サーバーの外部でクライアントとしてテストを実行する必要があります。

クライアントとしてテストを実行するには、次の 3 つの方法があります。

  1. クラスに で注釈を付けます。これにより@RunAsClient、すべてのテストがクライアント テストとしてマークされます。
  2. でテストに注釈を付け@RunAsClientます。予想どおり、そのテストにのみ適用されます。
  3. 注釈のtestable = falseプロパティを使用して、デプロイメントをテスト不可に設定します。@Deploymentこの展開を参照するすべてのテストは、クライアント テストになります。
于 2015-12-04T15:43:39.573 に答える