Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
SMILA/Documentation/HowTo/How to integrate test bundle into build process
This page describes how to integrate your own test bundle (plug-in) into the build process (Bamboo):
Contents
Define Junit version range
Currently, it is necessary to import junit.framework with an explicit version range:
- Open the MANIFEST.MF file of your test bundle using the Plug-in Manifest Editor.
- Switch to the Dependencies tab and add the package junit.framework to the Imported Packages section.
- Make sure to set the version range of this package as follows:
Minimum version | 3.8.0 | Inclusive |
Maximun version | 4.0.0 | Exlusive |
Create test.xml in test bundle
The following figure shows the typical folder structure of a test bundle in the Package Explorer.
Every test plug-in you want to run needs an Ant file called test.xml. Because each test run starts up a new Eclipse instance, it is convenient to create a plug-in bundling all your tests into a single AllTests suite. Then, there is only one test run and there must only be one test.xml file maintained.
- Provide an AllTests suite that bundles all your tests.
- Download the template file for test.xml from File:Test-bundle-template.zip (see below).
- Add the file to your test bundle.
- Adapt the value of the property plugin-name to meet your bundle name:
... <!-- sets the properties plugin-name, and library-file --> <property name="plugin-name" value="<your bundle>"/> <property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/> ...
The code snippet below shows the template of the test.xml file. The entry point is the "run" target. Its prerequisites are "init", "suite", and "cleanup". The "suite" target calls "core-test" in library.xml with the properties necessary to start up the test host and run AllTests:
<?xml version="1.0"?> <project name="testsuite" default="run" basedir="."> <!-- The property ${eclipse-home} should be passed into this script --> <!-- Set a meaningful default value for when it is not. --> <property name="eclipse-home" value="${basedir}/../.."/> <!-- sets the properties plugin-name, and library-file --> <property name="plugin-name" value="org.eclipse.smila.sample.bundle.test"/> <property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/> <!-- This target holds all initialization code that needs to be done for --> <!-- all tests that are to be run. Initialization for individual tests --> <!-- should be done within the body of the suite target. --> <target name="init"> <tstamp/> <delete> <fileset dir="${eclipse-home}" includes="${plugin-name}*.xml"/> </delete> </target> <!-- This target defines the tests that need to be run. --> <target name="suite"> <property name="eit-folder" value="${eclipse-home}/eit_folder"/> <delete dir="${eit-folder}" quiet="true"/> <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}"> <property name="data-dir" value="${eit-folder}"/> <property name="plugin-name" value="${plugin-name}"/> <property name="classname" value="${plugin-name}.AllTests"/> <!-- Activates logging (if necessary activate it--> <property name="vmargs" value="-Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog -Dorg.apache.commons.logging.simplelog.defaultlog=debug"/> </ant> </target> <!-- This target holds code to cleanup the testing environment after --> <!-- after all of the tests have been run. You can use this target to --> <!-- delete temporary files that have been created. --> <target name="cleanup"> </target> <!-- This target runs the test suite. Any actions that need to happen --> <!-- after all the tests have been run should go here. --> <target name="run" depends="init,suite,cleanup"> <ant target="collect" antfile="${library-file}" dir="${eclipse-home}"> <property name="includes" value="${plugin-name}*.xml"/> <property name="output-file" value="${plugin-name}.xml"/> </ant> </target> </project>
Include test.xml in build.properties
Add the test.xml file to the build.properties of your test bundle:
source.. = code/src/ output.. = code/bin/ bin.includes = META-INF/,\ .,\ test.xml
Additional information: You don't have to modify the build file (make.xml) to include a bundle in the build. The make.xml file includes all bundles (core and test), which are located under the local trunk folder (e.g. SMILA/core). If you don't want to include your new bundle into the build process, the bundle has to be explicitly excluded in the make.xml file. You also don´t have to modify the build file to include your test bundle to checkstyle, pmd and emma. The tests inside your test bundle will be automatically executed. If you don´t want to run a test, the test bundle has to be explicitly excluded in the make.xml. For further information see: Introduction to make.xml. |
Include test plug-in into org.eclipse.smila.test.feature
- Open the file org.eclipse.smila.test.feature/feature.xml) using the Feature Manifest Editor.
- Switch to the Plug-ins tab and add your test bundle to the Plug-ins and Fragments section.
- Select the added plug-in and enable the option "Unpack the plug-in archive after the installation" in the Plug-in Details section. If you don't enable this option, the bundle's test.xml file won't be found and the build process will fail.
For further information see: Build and Test Eclipse Product.