Arquillian In-container URL Extension 
An extension for Arquillian that allows you to reference the base URL of your test deployment from within the container. This makes it easy to e.g. test a REST service and check its effect on backend components in the same test case.
Deprecation Notice
This extension is officially deprecated since ARQ-540 has been resolved. You can now use @ArquillianResource from within the container!
Usage
Add the extension in your pom.xml file:
<dependency>
<groupId>com.handcraftedbits.arquillian</groupId>
<artifactId>arquillian-incontainerurl-extension</artifactId>
<version>1.0.1</version>
<scope>test</scope>
</dependency>
Then add the @InContainerResource annotation to a URL field or test method parameter:
@InContainerResource
private URL url;
or
@Test
public void testService (@InContainerResource URL url) {
...
}
That's it! All your container-based tests will now have access to the URL where your test archive has been deployed. For client-based tests (i.e., those annotated with @RunAsClient or where the deployment has been marked testable = false), this field or method parameter will be null; you should use @ArquillianResource instead.
Notes
- This extension will only work for WAR archives supporting Servlet 3.0 or an EAR archive containing a WAR archive that supports Servlet 3.0.
- This extension will only work on real Java EE application server containers (e.g. Wildfly, Glassfish, etc.). It will not work with the Weld container.
- Though it may be tempting, don't use
@ArquillianResourceand@InContainerResourceon the same field or test method parameter; your tests will fail.