Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "SWTBot/Ant"

m (updated the ant example)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
{{SWTBot}}
+
#REDIRECT [[SWTBot/Automate test execution]]
= Automate your SWTBot tests =
+
 
+
SWTBot allows for tests to be executed from ant or command-line. Here are some steps that you need to perform in order to run tests in a 'headless' way.
+
 
+
=== A Screencast ===
+
 
+
Videos speak louder than pictures and words put together:
+
* [http://download.eclipse.org/technology/swtbot/docs/videos/beginners/SWTBotGettingStartedIn5Minutes A 5 minute quick quick tutorial on how to get started with swtbot]
+
* [http://download.eclipse.org/technology/swtbot/docs/videos/beginners/SWTBotHeadlessTestingForNovices Running SWTBot tests from the command line]
+
 
+
=== Pre-requisites ===
+
 
+
* Download the '''Headless Testing Framework''' for running tests from within ant. This file is called named something like org.eclipse.swtbot.eclipse.test-2.0.0.187-dev.zip
+
* You'll need the following plugins from swtbot (you don't need all the swtbot packages)
+
** org.eclipse.swtbot.swt.finder
+
** org.eclipse.swtbot.eclipse.finder
+
** org.hamcrest
+
** org.junit4(recommended) you may also use org.junit
+
** org.apache.log4j
+
 
+
=== Setup ===
+
 
+
Your folder structure should look like the following:
+
 
+
<pre>
+
ECLIPSE_HOME
+
+ plugins
+
  | - com.yourplugins
+
  | - ...
+
  | - ...
+
  | - org.eclipse.swtbot.swt.finder
+
  | - org.eclipse.swtbot.eclipse.finder
+
  | - org.hamcrest (and other dependencies)
+
  | - ...
+
  | - ...
+
  | - org.eclipse.swtbot.ant.optional.junit4 (or junit3, but not both) (from the Headless Testing Framework)
+
  | - org.eclipse.swtbot.eclipse.junit4.headless (or junit3.headless, but not both) (from the Headless Testing Framework)
+
  | - org.junit4 (or org.junit, but not both)
+
+ features
+
</pre>
+
 
+
=== Executing ===
+
 
+
==== Command-line ====
+
Here's a command line argument that's used to execute the tests:
+
 
+
<pre>
+
 
+
$ ECLIPSE_HOME=/path/to/your/application
+
$ TEST_CLASS=com.yourcompany.product.test.AllTessts # see http://github.com/ketan/swtbot/blob/master/org.eclipse.swtbot.eclipse.finder.test/src/org/eclipse/swtbot/eclipse/finder/AllTests.java for an example
+
$ TEST_APPLICATION_ID=com.yourcompany.example.application # the id of the application that needs to be tested
+
$ WORKSPACE=/path/to/your/workspace
+
$ TEST_PRODUCT_ID=com.yourcompany.product # optional, if you're not using a product, please do not add the -product argument in the command below
+
$ TEST_PLUGIN_ID=com.yourcompany.product.test # the id of the plugin containing SWTBot tests
+
 
+
$ OS=[macosx | win32 | linux]
+
$ WS=[[cocoa|carbon] | gtk | win32] # for macosx, linux, and windows respectively.
+
$ ARCH=[x86|x86_64] # for 32 bit and 64 bit swt binaries.
+
 
+
$ $JAVA_HOME/bin/java \
+
-Xms256M -Xmx768M -XX:MaxPermSize=512M \
+
-classpath $ECLIPSE_HOME/plugins/org.eclipse.equinox.launcher_1.0.200.v20090128-1500.jar \
+
org.eclipse.core.launcher.Main \
+
-application org.eclipse.swtbot.eclipse.junit4.headless.swtbottestapplication \
+
-testApplication $TEST_APPLICATION_ID
+
-product $TEST_PRODUCT_ID \ # optional, only if you're working with a product
+
-data $WORKSPACE \
+
formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,$ECLIPSE_HOME/$TEST_CLASS.xml \
+
formatter=org.apache.tools.ant.taskdefs.optional.junit.PlainJUnitResultFormatter \
+
-testPluginName $TEST_PLUGIN_ID \
+
-className $TEST_CLASS \
+
-os $OS -ws $WS -arch $ARCH \
+
-consoleLog -debug
+
</pre>
+
 
+
This will run the test specified by TEST_CLASS and generate the test output in ECLIPSE_HOME/TEST_CLASS.xml. This output can be parsed using junitreport ant task.
+
 
+
==== Ant ====
+
 
+
<source lang="xml">
+
<echo>SWTBot test</echo>
+
<java dir="${eclipse.home}" fork="true" output="${eclipse.test.home}/output.txt" logError="true" classname="org.eclipse.core.launcher.Main" failonerror="false">
+
<classpath>
+
<fileset dir="${eclipse.home}/plugins">
+
<include name="org.eclipse.equinox.launcher_*.jar"/>
+
</fileset>
+
</classpath>
+
<jvmarg line="-Xms256M -Xmx768M -XX:MaxPermSize=512M"/>
+
<arg line="-application org.eclipse.swtbot.eclipse.junit4.headless.swtbottestapplication"/>
+
<arg line="ARGUMENTS"/>
+
<arg line="FROM"/>
+
<arg line="COMMAND LINE"/>
+
<arg line="EXAMPLE ABOVE"/>
+
</java>
+
</source>
+
 
+
=====Pre-prepared ant tasks=====
+
The script at http://github.com/ketan/swtbot/blob/master/org.eclipse.swtbot.releng/test-sandbox/org.eclipse.swtbot.eclipse.finder.test.xml shows an example of how you can use the standard ant task available with SWTBot:
+
 
+
<source lang="xml">
+
<ant target="swtbot-test" antfile="${library-file}" dir="${eclipse-home}">
+
<property name="data-dir" value="${temp-workspace}" />
+
<property name="plugin-name" value="${plugin-name}" />
+
<property name="classname" value="org.eclipse.swtbot.eclipse.finder.AllTests" />
+
<property name="vmargs" value=" -Xms128M -Xmx368M -XX:MaxPermSize=256M ${jvmOption}" />
+
</ant>
+
</source>
+
 
+
The ${library-file} is part of the '''Headless Test Framework''' and can be viewed at http://github.com/ketan/swtbot/blob/master/org.eclipse.swtbot.eclipse.junit4.headless/library.xml. This ant script performs the actual launch for the tests using the command line above.
+

Latest revision as of 10:37, 20 July 2012

Back to the top