<?xml version="1.0" encoding="UTF-8"?>
<!--
   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.
 -->
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="website.xsd">

	<properties>
		<title>JUnit Testing</title>
		<author email="sebawagner@apache.org">
			OpenMeetings Team
		</author>
	</properties>

	<body>

		<section name="Introduction">

			<p>
				Automatic tests are the significant part of development process.
				Below is the instruction of how to run Openmeetings
				<a href="http://junit.org" rel="nofollow">JUnit</a>
				tests.
			</p>
		</section>

		<section name="Details">


			<ol>
				<li>running tests using command line: </li>
				<li>
					<ul>
						<li>all tests:
							<div class="xmlcode">
								ant test
							</div>
						</li>
						<li>subset of tests by mask:
							<div class="xmlcode">
								ant -Dtestcases=TestError* test
							</div>
						</li>
					</ul>
				</li>
				<li>running tests from Eclipse IDE: </li>
				<li>
					<ul>
						<li>
							<div class="xmlcode">
								ant -Ddb=&lt;your_DB&gt; prepare-eclipse
							</div>
						</li>
						<li>Start Eclipse </li>
						<li>Load workspace with Openmeetings project (or refresh existing
							project)
						</li>
						<li>Select "Debug Configurations..." </li>
					</ul>
				</li>
			</ol>
			<p>
				<a class="fancybox-buttons" href="images/DebugConfigurations.png">
					<img src="images/DebugConfigurations.png" alt="" width="367"
						height="262" />
				</a>
			</p>
			<ul>
				<li>Create New Junit configuration, give it a name and select test
					class
				</li>
			</ul>
			<p>
				<a class="fancybox-buttons" href="images/NewConfiguration.png">
					<img src="images/NewConfiguration.png" alt="" width="420"
						height="206" />
				</a>
			</p>
			<ul>
				<li>Select Arguments tab </li>
				<li>Add the following code to the VM section
					<div class="xmlcode">
						-javaagent:${workspace_loc:Openmeetings}/build/lib/om/openjpa-bundle-2.2.2.jar
						-Dom.home=${workspace_loc:Openmeetings}/src/main/webapp
						-Dbackups.dir=${workspace_loc:Openmeetings}/build/lib/junit/backups
					</div>
				</li>
				<li>To avoid temporary files being created in OM root, modify
					"Working Directory" as follows
					<div class="xmlcode">${workspace_loc:Openmeetings}/build/junit</div>
				</li>
			</ul>
			<p>
				<a class="fancybox-buttons" href="images/Arguments.png">
					<img src="images/Arguments.png" alt="" width="435" height="410" />
				</a>
			</p>
			<ul>
				<li>Select Debug </li>

			</ul>
			<ul>
				<li>Note: You need a file called "persistence.xml" in src/META-INF
					if you run the JUnit test from inside Eclipse. Normally "ant
					prepare-eclipse" should do that for you. </li>

			</ul>

		</section>

	</body>

</document>