public class TomEEEmbeddedSingleRunner
extends BlockJUnit4ClassRunner
see org.apache.tomee.embedded.SingleInstanceRunnerTest for a sample.
idea is to reuse some part of ApplicationComposer API to get a single container for all tests in embedded mode.
Base is to declare an @Application class which holds the model and some injections.
Note: this can be replaced setting tomee.application-composer.application property to the fully qualified name of the app.
Note: @Application classes are only searched in the same jar as the test.
Model:
- @Configuration: programmatic properties - note injections don't work there.
- @Classes: only context value is used.
- @ContainerProperties: to configure the container
- @WebResource: first value can be used to set the docBase (other values are ignored)
- @TomEEEmbeddedSingleRunner.LifecycleTasks: allow to add some lifecycle tasks (like starting a ftp/sft/elasticsearch... server)
Injections:
- CDI
- @RandomPort: with the value http or https. Supported types are URL (context base) and int (the port).