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/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.7
- 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, you will need to import these additional packages at least
- org.junit
- org.junit.runner
- org.junit.runners
However, because the Eclipse Testing Framework uses an workaround to execute JUnit4 tests (for details see [1]), you must keep the Import-Package entry for junit.framework or the test bundle will not work in the headless build process. Check bundle org.eclipse.smila.clusterconfig.simple.test for an example.
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). Remember that if you use the bundle folder in SMILA configuration, you need to replicate that structure in the test bundle configuration folder. (EG: SMILA.application/configuration/org.eclipse.smila.integration.bundle/bundle.properties --> org.eclipse.smila.integration.bundle.test/configuration/org.eclipse.smila.integration.bundle/bundle.properties)
- 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}).
- If you have a config.ini, you have to reference it here:
Hint: You can configure Eclipse to add VM arguments each time a launcher is created:
- Window --> Preferences --> Plug-in Development --> Target Platform --> Edit.
- On the Arguments page, you can set the VM arguments that will be added to each new launch configuration.
Include test bundle in build process
To enable the build process (see How to build a SMILA distribution) to include your test bundle you should follow the instructions on how to integrate a test bundle into the build process.