1

TestNG と Arquillian を使用してレガシー アプリケーションをテストしようとしています。@Deployment で注釈を付けた 2 つの異なるメソッドが必要なため、制約があります。

方法 1 (テスト コードのみをデプロイし、WildFly 10 で既にデプロイおよび実行されているアプリケーションに対して実行する場合)

    @Deployment
    public static WebArchive createDeployment() {
        WebArchive war = ShrinkWrap.create(WebArchive.class).addClass(Test.class)
                .addAsManifestResource(new File("jboss-deployment-structure.xml"))
                .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
        return war;
    }

方法 2 (アプリケーション全体とテスト コードをリモートの WildFly 10 サーバーにデプロイする場合)

    @Deployment
    public static EnterpriseArchive createEARDeployment(){
        EnterpriseArchive ear = ShrinkWrap.createFromZipFile(EnterpriseArchive.class, new File("some_archive.ear"))
                .addAsModule(Testable.archiveToTest(ShrinkWrap.create(WebArchive.class, "test.war")
                            .addClass(SoftCountFacadeTest.class)
                            .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")));
        return ear;
    }

私の要件は、Arquillian が何らかの構成に基づいてこれらの展開方法のいずれかを選択できるようにすることです。とりあえず、実行する必要のないデプロイ方法はコメントアウトしています。ここで指定された @Deployment.orderは、すべてのデプロイメントが引き続き実行され、実行順序のみを制御できるため、役に立ちません。

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

4

1 に答える 1

1

試すことができるかもしれません(自分で耳の状態を記入する必要があります):

@Deployment
public static Archive<?> createDynamicDeployment() {
  if(<ear condition>) {
    EnterpriseArchive ear = ShrinkWrap.createFromZipFile(EnterpriseArchive.class, new File("some_archive.ear"))
            .addAsModule(Testable.archiveToTest(ShrinkWrap.create(WebArchive.class, "test.war")
                        .addClass(SoftCountFacadeTest.class)
                        .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml")));
    return ear;
  } else {
    WebArchive war = ShrinkWrap.create(WebArchive.class).addClass(Test.class)
            .addAsManifestResource(new File("jboss-deployment-structure.xml"))
            .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
    return war;
  }
}
于 2016-12-07T09:52:48.560 に答える