mvn clean test
Multiple TomEE Arquillian
This example shows how to deploy two different applications if the need for it shows. That sometimes happens if we need communication between two different web applications. In our example we will deploy two applications web resources and test their content.
Run the application:
This command runs the test where we have specified the two deployments we want to
test. The test deploys two applications on which we test their content
that we defined as web resource in our createDep1()
and createDep2()` method.
@Deployment annotation
If we want to have two different applications running in the same test it’s as
simple as adding two different @Deployment
annotated methods to our test class.
@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");
}
Define Deployment
context
For each test method we have to define on which Deployment
context the tests
should be run. For that we use the @OperateOnDeployment("war2")
annotation on our
test method.
@Test
@OperateOnDeployment("war2")
public void testRunningInDep2(@ArquillianResource final URL url) throws IOException {
final String content = IO.slurp(url);
assertEquals("Hello from TomEE 2", content);
}