<!--
/*
 * Copyright 2001-2008 The Apache Software Foundation.
 * 
 * Licensed 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.
 *
 */

--><html>
<body>
<p>Unit tests to test the api implementation. Theses tests go all the way down into
the persistence layer. By default they are using an embedded Java-based database
called Derby. </p>

<p>The order in which the tests are run is irrelevant however some tests are more basic
then others. For example, you will need to have a Publisher, before you can persist
a Business, and you need to have a Business before you can persist a Service. So it
makes sense to test persisting a Publisher first.</p>

<p>By default JUnit executes tests in alphabetical order, so to control test execution order we
use the JUDDI_###_ prefix.
</p>
</body>
</html>