SMILA/Documentation/HowTo/Create a test bundle (plug-in)

This page descibes how to create a new test bundle for SMILA.The description on how to add a plug-in bundle can be found in How to create a bundle (plug-in). This HowTo is similar with only minor differences.

Contents

Create the test bundle

The following steps must be performed to create the test project base:

Launch Eclipse and select your SMILA workspace.

Select File > New > Projectand click Plug-in Project.

Click Next. Now you have to fill in various metadata and settings for your plug-in project. You may as well edit some of the settings later on by opening the MANIFEST.MF file with the Plug-in Manifest editor.

Enter a project name (you should use the same name as the bundle that should be tested and append a .test to it, for this example we will use org.eclipse.smila.integration.bundle.test).

Add code as a parent to the source and output folder:

Set Source folder to code/src.

Set Output folder to code/bin.

Set Target Platform to an OSGi framework: Equinox.

Click Next.

Fill in the metadata information for the new bundle. Set the plug-in's name as ID, your bundle's version, a reasonable bundle name and the information about the provider (i.e. you). For our example we select:

ID: org.eclipse.smila.integration.bundle.test (in our example)

Version: 1.0.0

Name: Example Bundle Plugin Test

Provider: Example company

Exection Environment: JavaSE-1.6

Normally you won't need an activator in the test bundle, so uncheck this option.

Click Next.

Uncheck the Option Create a plug-in using one of the templates.

Click Finish.

Create a test suite file

Now you should create a test suite in your test bundle.

Open your MANIFEST.MF file.

Switch to the Dependencies page.

In Imported Packages click Add.

Add junit.framework.

Save MANIFEST.MF.

Create a package in code/src with the same name as your bundle (in our example it is org.eclipse.smila.integration.bundle.test).

Add an empty test suite named AllTests.java. Here you can add all your bundle's tests after you've created them.

Since SMILA 1.1 you can also use the Junit4 annotations to define test suites and cases. However, because the Eclipse Testing Framework uses an workaround to execute JUnit4 tests (for details see [1]), you must still import package junit.framework or the test bundle will not work in the headless build process.

Prepare the testing gear

Now you have to make some additions to the project in order to be able to integrate it into the build process or create plug-in test launchers.

Create the launcher

Create a configuration folder in your test bundle's root folder.

Add this configuration folder to your build.properties.

Add a log4j.properties file to your configuration folder.

If you need plug-ins to be started for your test (which is normally the case), create a config.ini file in your configuration folder containing your OSGi bundles config.

Create a JUnit Plug-in Test launcher for your AllTests.java suite:

Select Run > Run Configurations.

Select the JUnit Plug-Test node and click New.

Set the name to the bundle's name (here: org.eclipse.smila.integration.bundle.test).

On the Test page:

Select which class to test.

Set the Test runner to JUnit 3 or JUnit 4, depending on the style you have chosen.

On the Arguments page:

Set the Program arguments to -os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl}.

Set the VM arguments to -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger -Dlog4j.configuration=file:${eclipse_home}configuration/log4j.properties -Xms40m -Xmx256m.

If you need additional configuration or test data files (files/folders you store in your configuration folder), you should also add the following parameter to the VM arguments: -Dorg.eclipse.smila.utils.config.root=./configuration (adding this parameter is a good idea in any case).

On the Configuration panel:

If you have a config.ini, you have to reference it here:

Check Use an existing config.ini file as a template.

Click Workspace and navigate to the config.ini (example path: ${workspace_loc:org.eclipse.smila.integration.bundle.test/configuration/config.ini}).

Hint: You can configure Eclipse to add VM arguments each time a launcher is created: