Annotation Interface Z2JupiterTestable
To do so, requests for test discovery and execution are sent from the client,
where the test is initiated (e.g. your IDE), to
the Web application com.zfabrik.dev.z2jupiter/web
listening
on the context path /z2jupiter
and running as part of environment/webWorkerUp
by default.
Technically, the Z2 Jupiter Test Engine masks test execution of annotated classes for non-execution locally and for normal execution remotely and reports test events as if executed locally, so that, from a local client perspective the execution is as if it happened locally, while the execution on the remote end works ignoring Z2 Jupiter and so in principle, supports any other test engine or configuration model.
You may combine this annotation with other test engine annotations.
Using this annotation as well as through system properties and environment settings various aspects of the execution may be configured.
One particular aspect of execution is the remote location to test one that
may be set using the url()
attribute. This setting may be overwritten,
in order of preference by
- The system property
com.zfabrik.dev.z2jupiter.url
- The environment variable
Z2_JUPITER_URL
Remote access to test discovery and execution is protected by authentication.
User name and password may be specified by setting the user()
and
password()
attribute respectively. Authentication is verified against the
default "realm" that is configured in environment/webUsers
(and
may be changed by adapting the built-in Jetty Web server configuration).
Alternatively, username and password may be specified by system properties
and environment properties, where system properties take preference.
- The system property
com.zfabrik.dev.z2jupiter.user
- The environment variable
Z2_JUPITER_USER
For password:
- The system property
com.zfabrik.dev.z2jupiter.password
- The environment variable
Z2_JUPITER_PASSWORD
Note: In order to make remote execution from non-localhost clients possible, you may need to change z2 configuration to allow such remote access or use a means tunneling, like SSH tunneling (see also How to Secure a Z2 Installation)
Configuration for a unit test class that is to run via the Z2 Jupiter Test Engine simply requires to specify this annotation:
@Z2UnitTestable(componentName="com.acme.modulex/java")
public class SomeTests {
@Test
public void testThis() throws Exception {
// some test code
}
}
Sometimes it can be handy to initialize other components before running a test (e.g. a Spring application
context). Instead of using a super class to do static initialization, you can instead use the dependencies()
attribute to specify Z2 components to be prepared before the test run. For example a test that requires a Spring application
context to be initialized and makes use of Spring configuration could look like this:
@Z2UnitTestable(
componentName="com.acme.modulex/java",
dependencies={"com.acme.modulex/applicationContext"}
)
@Configurable
public class BusinessTests {
@Autowired
private SomeService someService;
@Test @Transactional
public void testSomething() {
// ...
}
}
The Z2 Jupiter Engine feature builds on the JUnit 5 API and succeeds
the Z2 Unit feature (see Z2UnitTestRunner).-
Optional Element Summary
Modifier and TypeOptional ElementDescriptionName of the java component that contains the test class.String[]
Runtime dependencies specified as component names.Password name to send for authentication.URL to send the test request to.Username to send for authentication.
-
Element Details
-
componentName
String componentNameName of the java component that contains the test class. A short form reduced to the module name may be used for java components ending with "/java".- Returns:
- Default:
- ""
-
url
String urlURL to send the test request to. Defaults tohttp://localhost:8080/z2jupiter
. The URL may alternatively be defined by the system propertycom.zfabrik.dev.z2jupiter.url
or the environment variableZ2_JUPITER_URL
.- Returns:
- Default:
- "http://localhost:8080/z2jupiter"
-
user
String userUsername to send for authentication. Defaults to "z*". The username may alternatively be defined by the system propertycom.zfabrik.dev.z2jupiter.user
or the environment variableZ2_JUPITER_USER
.- Returns:
- Default:
- "z*"
-
password
String passwordPassword name to send for authentication. Defaults to "z". The password may alternatively be defined by the system propertycom.zfabrik.dev.z2jupiter.password
or the environment variableZ2_JUPITER_PASSWORD
.- Default:
- "z"
-
dependencies
String[] dependenciesRuntime dependencies specified as component names. Before executing a test on the z2 side, these components will be looked up asIDependencyComponent
and, if successful, be asked toIDependencyComponent.prepare()
.- Default:
- {}
-