4

Arquillian で Java EE アプリケーションをテストしたいと考えています。Arquillian が管理するサーバーにいくつかのテスト クラスを配置してテストするための簡単なセットアップが機能しています。

ここで、ビルド プロセス中にビルドされた EAR ファイルを使用したいと考えています。と

@Deployment
public static EnterpriseArchive createDeployment() {
    File earFile = ...
    EnterpriseArchive archive = ShrinkWrap.createFromZipFile(EnterpriseArchive.class, earFile);
    return archive;
}

Arquillian を介して JBoss に EAR を配置できます。展開が表示され、展開中にエラーはありません。Arquillian だけが、テスト クラスが見つからないというエラーを返しますが、これは明らかに問題ありません。

ここで、テスト クラスをどこに配置するかが問題になります。Arquillian によって EAR に入れられた test.war にテスト クラスを入れることができますが、ArquillianServletRunner が見つからないという例外が発生します。テスト クラスをモジュールまたはライブラリとして JAR ファイルに配置すると、依存関係の問題により、モジュールとして配置するとテスト クラスが見つからないか、ライブラリとして配置するとインジェクトが機能しません。

テストクラスをどこに置く必要がありますか???

私のarquillian.xml:

<?xml version="1.0" encoding="UTF-8"?>
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://jboss.org/schema/arquillian"
    xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">

   <defaultProtocol type="Servlet 3.0" />

    <container qualifier="jboss7" default="true">
        <configuration>
            <property name="jbossHome">${cargo.dir}/jboss-as-dist-7.1.1.Final/jboss-as-7.1.1.Final</property>
        </configuration>
    </container>

    <engine>
        <property name="deploymentExportPath">target/deployments</property>
    </engine>

</arquillian>
4

3 に答える 3

1

@Deployment(testable = false) を使用してクライアント側でテスト クラスを実行できますが、これには、現時点では持続性エクステンション (およびその他のエクステンション) を使用できないという欠点があります。

私のコード例:

@RunWith(Arquillian.class)
public class PersonWebServiceIT {

    private PersonWebService service;

    @Deployment(testable = false)
    public static Archive<?> createDeployment() {
        return ShrinkWrap
                .create(ZipImporter.class, "test.war")
                .importFrom(
                        new File("simple-webservice-1.0.0-SNAPSHOT.war"))
                .as(WebArchive.class);
    }

    @Test
    public void testFindPersons(@ArquillianResource URL deploymentUrl) {
        ....
    }

}
于 2013-02-04T15:53:54.003 に答える
0

既存の EAR を扱うときは、テストを実行する WAR を、他のテスト EJB と一緒に特別な JAR に入れた実際のテストから分離することを好みます。application.xml同様の質問の下で必要な操作を行う方法の例を投稿しました: https://stackoverflow.com/a/17036383/1667977

于 2013-06-11T06:41:56.870 に答える