一个测试类中的多个部署方法

时间:2016-12-07 09:31:11

标签: java jboss-arquillian shrinkwrap

我尝试使用TestNG和Arquillian测试遗留应用程序。有一个约束因为我需要使用@Deployment注释两种不同的方法。

方法1(仅用于部署测试代码并针对已在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;
    }

方法2(用于将整个应用程序与测试代码一起部署到远程WildFly 10服务器)

{{1}}

我的要求是Arquillian应该能够根据某些配置选择这些部署方法中的任何一种。暂时,我正在评论不需要运行的部署方法。给定here的@ Deployment.order没有用,因为所有部署仍然只能执行它们的执行顺序。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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;
  }
}