2016-12-07 66 views
0

我正在嘗試使用TestNG和Arquillian測試遺留應用程序。有一個約束,由於我需要用@Deployment註釋兩個不同的方法。一個測試類中的多個部署方法

方法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可以選擇使用的基礎上進行一些配置,這些部署方法。暫時我正在評論不需要運行的部署方法。由於所有部署仍將運行,因此給定here的@ Deployment.order是沒有用的,只有它們的執行順序可以被控制。

任何幫助,高度讚賞。

回答

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; 
    } 
} 
+0

我試圖找到ShrinkWarp和的Arquillian的功能範圍內的解決方案。無論如何,這將在我的情況。非常感謝 :-) –

相關問題