Preloader image

Este exemplo mostra como implantar duas aplicações diferentes, se necessário. Às vezes, isso acontece se precisarmos de comunicação entre duas aplicações da web diferentes. Na nossa por exemplo, implantaremos dois recursos da Web de aplicações e testaremos seu conteúdo.

Executando a aplicação:

mvn clean test

Este comando executa o teste em que especificamos as duas implantações que queremos testar. O teste implementa dois aplicativos nos quais testamos seu conteúdo que definimos como recurso da web nos métodos createDep1() e `createDep2() `.

Anotação @Deployment

Se queremos ter duas aplicações diferentes em execução no mesmo teste, é simples como adicionar dois métodos anotados @Deployment à nossa classe de teste.

@Deployment(name = "war1", testable = false)
@TargetsContainer("tomee-1")
public static WebArchive createDep1() {
    return ShrinkWrap.create(WebArchive.class, "application1.war")
            .addAsWebResource(new StringAsset("Hello from TomEE 1"), "index.html");
}

@Deployment(name = "war2", testable = false)
@TargetsContainer("tomee-2")
public static WebArchive createDep2() {
    return ShrinkWrap.create(WebArchive.class, "application2.war")
            .addAsWebResource(new StringAsset("Hello from TomEE 2"), "index.html");
}

Definir o contexto de Deployment

Para cada método de teste, precisamos definir em qual contexto de Deployment os testes devem ser executados. Para isso, usamos a anotação @OperateOnDeployment("war2") no nosso método de teste.

@Test
@OperateOnDeployment("war2")
public void testRunningInDep2(@ArquillianResource final URL url) throws IOException {
    final String content = IO.slurp(url);
    assertEquals("Hello from TomEE 2", content);
}