Managed container starting a new JVM instance for each test archive. The classpath of the separate process is configurable and tests are executed using Arquillian JMX protocol.
Arquillian-container-SE is basically implementation of standard org.jboss.arquillian.container.spi.client.container.DeployableContainer
which during its deploy method starts a new JVM process with hardcoded org.jboss.arquillian.container.se.server.Main
class.
Newly created process exposes remote JMX connection so that Arquillian could execute a test remotely. Main class of the child process doesn’t do much. It creates new org.jboss.arquillian.protocol.jmx.JMXTestRunner
MBean and registers it to MBean server. Tests are executed by this JMXTestRunner
.
You can use following configuration properties:
Name | Description | Default value |
---|---|---|
additionalJavaOpts |
allows you to specify additional Java options e.g -Dtest.foo=false |
|
logLevel |
define log level |
INFO |
debug |
turn on debugging on port 8787 |
false |
lib |
set a directory path from which all jars are automatically added to the classpath |
|
keepDeploymentArchives |
keep your classpath artifacts after test execution |
false |
waitTime |
time in seconds to wait for a start of the new process and |
5 |
You can easily compose your classpath by using org.jboss.arquillian.container.se.api.ClassPath
which provides you access to static Builder
class. Using this builder you can add archives, classes and similar stuff you are used to from ShrinkWrap API to your test classpath.
Additionally you can specify system properties via this builder. Basic test deployment method could look like following:
[ source, java]
@Deployment public static Archive<?> createTestArchive() { return ClassPath.builder() .add(ShrinkWrap.create(BeanArchive.class) .addClasses(RequestScopedActiveInterceptorTest.class, Foo.class, Bar.class, Baz.class)).build(); }