Overview
This component is really just a test container for testing the other components. This container is not meant to be used in a production environment.
JUnit Integration
Find more information about migration to Junit5 here. JUnit 3 and JUnit 4 ((org.apache.fulcrum.testcontainer.BaseUnitTest
, org.apache.fulcrum.testcontainer.BaseUnit4Test
) are still supported.
IDEs (Eclipse/IntelliJ 2018.x) and Surefire Plugin 3.x should be able to handle all flavors. Running a JUnit 4 test in older IDE versions may require a test class annotation (@RunWith(JUnitPlatform.class)).
Usage
Extending the test case
In order to save you a little coding, a base class has been provided for your test cases.
Simply extend org.apache.fulcrum.testcontainer.BaseUnit5Test
for JUnit 5 and you are ready to go!
The lookup
and tearDown
methods of BaseUnit5Test
will handle the lifecycle of the container for you. Each test will have a freshly
initialized container in which to run.
To lookup and release components, call the lookup
and release
methods of BaseUnit5Test
.
By default, all tests will use the configuration files
TestComponentConfig.xml
and TestRoleConfig.xml
located in the
src/test
directory. If you want to override that behavior for ALL your
tests, you can override the getConfigurationFileName()
and/or
getRoleFileName()
methods.
If you are testing multiple config or role files, then just call
setConfigurationFileName()
or setRoleFileName()
before doing
your first lookup. The string you pass in should be prefixed from the directory the JVM is
running in (e.g. src/test/YOUR_CONFIG.xml).
You can choose between two container implementations, the ECM and Fulcrum YAAFI. For this just assign one of the values BaseUnit5Test.CONTAINER_ECM or BaseUnit5Test.CONTAINER_YAAFI to the static variable BaseUnit5Test.containerType before doing the first lookup. The default container is Fulcrum YAAFI.
Using the container directly
If you need more control over the container itself for your test, just don't extend the
unit test provided with the container. Instead, embed the container directly in your test
case. See the java docs for org.apache.fulcrum.testcontainer.Container
for
more information.
Configuring the Components
There are two ways of configuring your components. One is the traditional TestComponentConfig.xml and TestRoleConfig.xml files described below. Or, for the ECMContainer one is available that integrates the two, shown at the bottom.
First, here is the role configuration example.
<role name="org.apache.fulcrum.crypto.CryptoService" shorthand="crypto" default-class="org.apache.fulcrum.crypto.DefaultCryptoService"/>
Now comes the basic configuration of the component. Here will will configure the various encryption providers.
<crypto> <algorithm> <unix>org.apache.fulcrum.crypto.provider.UnixCrypt</unix> <clear>org.apache.fulcrum.crypto.provider.ClearCrypt</clear> <java>org.apache.fulcrum.crypto.provider.JavaCrypt</java> <oldjava>org.apache.fulcrum.crypto.provider.OldJavaCrypt</oldjava> </algorithm> </crypto>
When using the ECM container you can choose to use an integrated roles and components file like follows. Note that this file format is not supported with Fulcrum YAAFI and will cause an Exception to be thrown.
<my-system> <component role="org.apache.fulcrum.testcontainer.SimpleComponent" class="org.apache.fulcrum.testcontainer.AlternativeComponentImpl"> </component> </my-system>