mcconnell 2003/10/14 03:53:41 Modified: merlin/platform/xdocs/starting/advanced index.xml navigation.xml Added: merlin/platform/xdocs/starting/advanced/unit example.xml index.xml navigation.xml Log: Addition of documetation concerning unit tests that leverage Merlin as a component factory. Revision Changes Path 1.6 +4 -0 avalon/merlin/platform/xdocs/starting/advanced/index.xml Index: index.xml =================================================================== RCS file: /home/cvs/avalon/merlin/platform/xdocs/starting/advanced/index.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- index.xml 4 Oct 2003 11:08:40 -0000 1.5 +++ index.xml 14 Oct 2003 10:53:41 -0000 1.6 @@ -82,6 +82,10 @@ export statements that isolate a block implementation from the services it provides.</td> </tr> + <tr> + <td><a href="unit/index.html">Unit Tests</a></td> + <td>Setting up unit tests the leverage merlin as the component factory.</td> + </tr> </table> </section> </body> 1.6 +1 -0 avalon/merlin/platform/xdocs/starting/advanced/navigation.xml Index: navigation.xml =================================================================== RCS file: /home/cvs/avalon/merlin/platform/xdocs/starting/advanced/navigation.xml,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- navigation.xml 4 Oct 2003 11:08:40 -0000 1.5 +++ navigation.xml 14 Oct 2003 10:53:41 -0000 1.6 @@ -72,6 +72,7 @@ <item name="Deployment Templates" href="/starting/advanced/profiles.html"/> <item name="Profile Selection" href="/starting/advanced/selection.html"/> <item name="Composition" href="/starting/advanced/composite.html"/> + <item name="Unit Test" href="/starting/advanced/unit/index.html"/> </item> </item> <item name="Merlin System" href="/merlin/index.html"/> 1.1 avalon/merlin/platform/xdocs/starting/advanced/unit/example.xml Index: example.xml =================================================================== <?xml version="1.0"?> <!-- ============================================================================ The Apache Software License, Version 1.1 ============================================================================ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 4. The names "Jakarta", "Apache Avalon", "Avalon Framework" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [EMAIL PROTECTED] 5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see http://www.apache.org/. --> <document> <header> <title>Using Merlin</title> <authors> <person name="Stephen McConnell" email="[EMAIL PROTECTED]"/> </authors> </header> <body> <section name="Advanced Features"> <subsection name="Unit Test Example"> <p> The section presents a complete example of the unit test included in the hello tutorial. </p> <p><i>block.xml<br/> Definition of a container holding a single componet. </i></p> <source><![CDATA[ <container name="tutorial"> <component name="hello" class="tutorial.HelloComponent"/> </container> ]]></source> <p> The test case implementation. </p> <source><![CDATA[ package tutorial; import org.apache.avalon.merlin.unit.AbstractMerlinTestCase; /** * Hello Test Case. * * @author [EMAIL PROTECTED] */ public class StandardTestCase extends AbstractMerlinTestCase { //-------------------------------------------------------- // constructors //-------------------------------------------------------- /** * @param name the name of the test case * @param root the merlin system install directory */ public StandardTestCase( String name ) { super( MAVEN_TARGET_CLASSES_DIR, MERLIN_DEFAULT_CONFIG_FILE, MERLIN_DEBUG_OFF, MERLIN_INFO_OFF, name ); } //-------------------------------------------------------- // testcase //-------------------------------------------------------- public void testServiceResolution() throws Exception { Object hello = resolve( "hello" ); assertTrue( hello != null ); getLogger().info( "Hello established." ); } } ]]></source> </subsection> </section> </body> </document> 1.1 avalon/merlin/platform/xdocs/starting/advanced/unit/index.xml Index: index.xml =================================================================== <?xml version="1.0"?> <!-- ============================================================================ The Apache Software License, Version 1.1 ============================================================================ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 4. The names "Jakarta", "Apache Avalon", "Avalon Framework" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [EMAIL PROTECTED] 5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see http://www.apache.org/. --> <document> <header> <title>Using Merlin</title> <authors> <person name="Stephen McConnell" email="[EMAIL PROTECTED]"/> </authors> </header> <body> <section name="Advanced Features"> <subsection name="Unit Tests"> <p> The Merlin platform provides an abstract test case class that you can use as a component factory. To create a Merlin based unit test you simply extend AbstractMerlinTestCase. </p> <p> To use AbstractMerlinTestCase you should include the following dependency in you maven project definition. </p> <source><![CDATA[ <dependency> <groupId>merlin</groupId> <artifactId>merlin-unit</artifactId> <version>3.1-dev</version> </dependency> ]]></source> <p> The following code fragment declares a new test case using the abstract Merlin test case. </p> <source> import org.apache.avalon.merlin.unit.AbstractMerlinTestCase; public class ExampleTestCase extends AbstractMerlinTestCase { public ExampleTestCase( String name ) { super( name ); } // ... } </source> <p> The default behaviour it to deploy a block based on the deployment path ${basedir}/target/classes/. Merlin will attempt to locate a block.xml file at the [DEPLOYMENT-PATH]/BLOCK-INF/block.xml. To make sure that a block.xml file and component meta-info is available under ${basedir}/target/classes/ and you need to include the following resource statement in you maven project descriptor. </p> <source><![CDATA[ <build> <sourceDirectory>${basedir}/src/java/</sourceDirectory> <unitTestSourceDirectory>${basedir}/src/test/</unitTestSourceDirectory> <resources> <resource> <directory>${basedir}/conf</directory> <targetPath>BLOCK-INF</targetPath> <includes> <include>block.xml</include> </includes> </resource> <resource> <directory>${basedir}/src/java</directory> <includes> <include>**/*.x*</include> </includes> </resource> </resources> </build> ]]></source> <p> You can now access components established by Merlin via the component name. For example, if you block.xml defines a component named "hello" you access the component by requesting the relative path "hello". Relative paths are resolved relative to the container defined by your block defintion. </p> <p> The following code fragment demonstrates the usage of the resolve method to locate a named component and a convinience getLogger() method. </p> <source><![CDATA[ public void testServiceResolution() throws Exception { Hello hello = (Hello) resolve( "hello" ); assertTrue( hello != null ); getLogger().info( "Message from hello service: " + hello.getMessage() ); } ]]></source> </subsection> <subsection name="Customizing Merlin behaviour"> <p> The abstract test case include a constructor that allows control over the deployment path, configuration, debugging and info generation policies. Please refer to the supporting javadoc for more details. </p> <source><![CDATA[ public StandardTestCase( String name ) { super( MAVEN_TARGET_TEST_CLASSES_DIR, MERLIN_DEFAULT_CONFIG_FILE, MERLIN_DEBUG_OFF, MERLIN_INFO_OFF, name ); } ]]></source> </subsection> </section> </body> </document> 1.1 avalon/merlin/platform/xdocs/starting/advanced/unit/navigation.xml Index: navigation.xml =================================================================== <?xml version="1.0" encoding="UTF-8"?> <!-- ============================================================================ The Apache Software License, Version 1.1 ============================================================================ Copyright (C) 1999-2002 The Apache Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modifica- tion, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment: "This product includes software developed by the Apache Software Foundation (http://www.apache.org/)." Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. 4. The names "Jakarta", "Apache Avalon", "Avalon Framework" and "Apache Software Foundation" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact [EMAIL PROTECTED] 5. Products derived from this software may not be called "Apache", nor may "Apache" appear in their name, without prior written permission of the Apache Software Foundation. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the Apache Software Foundation. For more information on the Apache Software Foundation, please see http://www.apache.org/. --> <project> <title>Merlin</title> <body> <links> <item name="Home" href="http://avalon.apache.org/"/> <item name="Framework" href="http://avalon.apache.org/framework/"/> <item name="Components" href="http://avalon.apache.org/components"/> <item name="Containers" href="http://avalon.apache.org/containers/"/> <item name="Sandbox" href="http://avalon.apache.org/sandbox/"/> </links> <menu name="About Merlin"> <item name="Overview" href="/about/index.html"/> <item name="Getting Started" href="/starting/index.html"> <item name="Installation" href="/starting/installation.html"/> <item name="Using Merlin" href="/starting/tutorial/index.html"/> <item name="Advanced Features" href="/starting/advanced/index.html"> <item name="Lifecycle Extensions" href="/starting/advanced/lifecycle/index.html"/> <item name="Contextualization" href="/starting/advanced/context.html"/> <item name="Deployment Templates" href="/starting/advanced/profiles.html"/> <item name="Profile Selection" href="/starting/advanced/selection.html"/> <item name="Composition" href="/starting/advanced/composite.html"/> <item name="Unit Test" href="/starting/advanced/unit/index.html"> <item name="Hello Example" href="/starting/advanced/unit/example.html"/> </item> </item> </item> <item name="Merlin System" href="/merlin/index.html"/> <item name="Meta Model" href="/meta/index.html"/> <item name="Tools" href="/tools/index.html"/> </menu> <menu name="Resources"> <item name="Javadoc" href="/api/index.html"/> <item name="Download" href="/resources/download.html"/> <item name="Roadmap" href="/resources/roadmap/index.html"/> <item name="DPML" href="/dpml/index.html"/> </menu> </body> </project>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]