blob: 628ae7f65ee09f18654b6abc30af6a81f917e75b [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<document>
<properties>
<title>Test Container</title>
<author email="quintonm@bellsouth.net">Quinton McCombs</author>
<author email="epugh@upstate.com">Eric Pugh</author>
</properties>
<body>
<section name="Overview">
<p> 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. </p>
<p> In order to save you a little coding, a base class has been provided for your test cases.
Simply extend <code>org.apache.fulcrum.testcontainer.BaseUnitTest</code> and you are ready
to go. </p>
</section>
<section name="Usage">
<subsection name="Extending the test case">
<p> In order to save you a little coding, a base class has been provided for your test
cases. Simply extend <code>org.apache.fulcrum.testcontainer.BaseUnitTest</code> and you
are ready to go.
</p>
<p> The <code>lookup</code> and <code>tearDown</code> methods of <code>BaseUnitTest</code>
will handle the lifecycle of the container for you. Each test will have a freshly
initialized container in which to run.
</p>
<p> To lookup and release components, call the <code>lookup</code> and <code>release</code>
methods of <code>BaseUnitTest</code>.
</p>
<p> By default, all tests will use the configuration files
<code>TestComponentConfig.xml</code> and <code>TestRoleConfig.xml</code> located in the
<code>src/test</code> directory. If you want to override that behavior for ALL your
tests, you can override the <code>getConfigurationFileName()</code> and/or
<code>getRoleFileName()</code> methods.
</p>
<p> If you are testing multiple config or role files, then just call
<code>setConfigurationFileName()</code> or <code>setRoleFileName()</code> 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).
</p>
<p> You can choose between two container implementations, the ECM and Fulcrum YAAFI. For this
just assign one of the values BaseUnitTest.CONTAINER_ECM or BaseUnitTest.CONTAINER_YAAFI to
the static variable BaseUnitTest.containerType before doing the first lookup. The default
container is Fulcrum YAAFI.
</p>
</subsection>
<subsection name="Using the container directly">
<p> 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 <code>org.apache.fulcrum.testcontainer.Container</code> for
more information.
</p>
</subsection>
<subsection name="Configuring the Components">
<p> 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.
</p>
<p> First, here is the role configuration example.</p>
<source>
<![CDATA[
<role
name="org.apache.fulcrum.crypto.CryptoService"
shorthand="crypto"
default-class="org.apache.fulcrum.crypto.DefaultCryptoService"/>
]]>
</source>
<p> Now comes the basic configuration of the component. Here will will configure the various
encryption providers.
</p>
<source>
<![CDATA[
<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>
]]>
</source>
<p>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.
</p>
<source>
<![CDATA[
<my-system>
<component
role="org.apache.fulcrum.testcontainer.SimpleComponent"
class="org.apache.fulcrum.testcontainer.AlternativeComponentImpl">
</component>
</my-system>
]]>
</source>
</subsection>
</section>
</body>
</document>