1

JAX-RS Web サービスをテストするために、Tomee が組み込まれたコンテナーで Arquillian を使用しています。私のテスト ケースでは、提供されたリソースにアクセスするジャージ テスト クライアントを実行しています。ただし、リソースにアクセスすると、テストの結果は常に 404 NOT FOUND ステータスになります。

tomee-jaxrs インスタンスに同じプロジェクトをデプロイすると、リソースが適切に提供されます。

これらは、テスト プロジェクトに含めた Maven の依存関係です。

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>${jersey.version}</version>
</dependency>
<dependency>
    <groupId>org.apache.openejb</groupId>
    <artifactId>arquillian-tomee-embedded</artifactId>
    <version>${tomee.version}</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.jboss.arquillian.junit</groupId>
    <artifactId>arquillian-junit-container</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.jboss.shrinkwrap.resolver</groupId>
    <artifactId>shrinkwrap-resolver-depchain</artifactId>
    <scope>test</scope>
    <type>pom</type>
</dependency>

私のテストケースは次のようになります。

@RunWith(Arquillian.class)
public class DemoTest {
    @Deployment
    public static WebArchive createDeployment() throws Exception {
        return ShrinkWrap.create(WebArchive.class).addPackage(Controller.class.getPackage()).setWebXML("ch/codenation/test/regression/resources/container/WEB-INF/web.xml");
    }

    @ArquillianResource
    private URL url;

    @Test
    public void testGetData() throws Exception {
        final IApplicationLayer applicationLayer = new JaxRsApplicationLayer(url.toURI());
        final Callable<String> dataProvider = new DataProvider(applicationLayer);
        Assert.assertEquals("asdf", dateProvider.call());
    }
}

私のweb.xmlと同様に:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
    <display-name>codenation-service</display-name>
    <servlet>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

テスト メソッドにブレークポイントを設定し、ブラウザーでリソースにアクセスしようとすると、404 メッセージが表示されるため、実際には JAX-RS リソースは使用できません。ただし、アーカイブを tomee-jaxrs サーバーにデプロイするときに同じことを行うと、問題なく動作します。これを機能させるためにここに追加する必要がある追加の Maven 依存関係または arquillian 構成設定はありますか?

フィードバックをお寄せいただきありがとうございます。

4

2 に答える 2

2

これを pom.xml に含めるだけです

    <dependency>
        <groupId>org.apache.openejb</groupId>
        <artifactId>tomee-jaxrs</artifactId>
        <version>${tomee.version}</version>
        <scope>test</scope>
    </dependency>

組み込みの TomEE を使用できます。

于 2013-07-25T10:07:58.663 に答える
1

tomee-embedded アダプタを plus 構成に切り替える方法はないようです。そこで tomee-remote アダプターに切り替えました。

于 2013-07-05T07:41:52.827 に答える