2017-03-24 7 views
2

Arquillianのドキュメントを見ると、@ArquillianSuiteDeploymentアノテーションと@Deploymentアノテーションを使用して、希望するjar/warをコンテナに配置できることを認識しています。例:Arquillianの条件付き配布

@ArquillianSuiteDeployment 
public class MyDeployer { 

    @Deployment(name = "myapp", order = 1, testable = false) 
    public static Archive<?> myDeploymentJar() { 
     final File file = Maven.configureResolver().fromFile(System.getProperty("settings.xml")) 
      .loadPomFromFile("pom.xml").resolve("com.myapp:test-app").withoutTransitivity() 
      .asSingleFile(); 
     final JavaArchive jar = ShrinkWrap.createFromZipFile(JavaArchive.class, file); 
     final JavaArchive archive = ShrinkWrap.create(JavaArchive.class, "test-app.jar").merge(jar); 
     return archive; 
    } 
} 

は決して一緒に同じテスト、JAR-AおよびJAR-Cの間に、のは、私が展開したい2つのjarファイルを持っていることを推測してみましょう。

@Test 
@RunAsClient 
public void testOne() { 
    // deploy JAR-A before all others, but do not deploy JAR-C 
} 

@Test 
@RunAsClient 
public void testTwo() { 
    // deploy JAR-C before all others, but do not deploy JAR-A 
} 

私のテストに沿った条件付き@デプロイメントを導入することは可能ですか?

答えて

1

これは興味深い用途です。

デプロイメントはテストの実行前に実行されるため、注釈を使用するだけでは実現できません。

ただし、Deployerサービスを使用して、プログラムで展開を制御することはできます。

@Deployment(name = "JAR-C", managed = false) 
public static WebArchive create() { 
    return ShrinkWrap.create(JavaArchive.class); 
} 

@ArquillianResource 
private Deployer deployer; 

@Test 
public void should_work() { 
    deployer.deploy("JAR-C"); 
    // test 
    deploy.undeploy("JAR-C"); 
} 

重要な事実は、それがmanaged = falseフラグが@Deployment(name = "X", managed = false)にするためにあるものだ、あなたはあなたのためにこの展開を管理しないようにArquillianを指示しなければならないということです。

希望に役立ちます。