Recently, Bredex created an interesting product at the Eclipse Foundation: namely, Jubula, a tool for UI testing Eclipse RCP, SWT, Swing and web applications. Basically, I guess this will become the "community edition" of GUIDancer, which is good enough for me, considering the dire need for any free UI testing tool for RCP, SWT or Swing at all.

I won't go into comparisons with other tools in this post, but in short, imho, though there may be better tools for web testing, though there may be alternatives for Swing testing, though there may be better commercial tools for testing RCP and SWT, when you're looking for free tools for testing RCP/SWT, I think you should start with Jubula.

Unfortunately, working with Jubula turns out to be a bit unwieldy at first. - So I'll try to give a detailed step-by-step guide to your first GUI test automation with Jubula here, using a simple Eclipse RCP sample project as the test object.

So, let's start with setting up the test object first: Open up Eclipse and create a new plug-in project (File/New/Project.../Plug-in Development/Plug-in Project):New Plug-in Project Wizard, Page 1

Next, tell Eclipse that it's a rich client application:New Plug-in Project Wizard, Page 2

And finally, choose the "RCP Mail" template:New Plug-in Project Wizard, Page 3

Now, let's see what we've got in our workspace:The Mail RCP project, with warnings!

Hey, wait, what's that, warnings about raw types? - We can't tolerate that. I'll quickly fix these by turning the List into a List:Fixing the warnings

That was easy. Actually, why do they have these warnings in their sample code at all? - Anyway, what's next? Right, let's try if it works:Ok, it runs

Looking good. This should be simple enough for our first steps, yet complex enough to play around a bit. - However, for exporting the application, we're missing a product configuration (File/New/Product Configuration):Creating a product configuration

Alright, now we're set for exporting the RCP application as Eclipse product (File/Export.../Eclipse product):Exporting the RCP product

Finally, we're done with preparing our test object. Or are we?

Actually, we're not, unfortunately. The reason for this is that sadly, the Eclipse JFace/SWT libraries haven't got any easy way to access/instrument them for automation on the fly (unlike Swing).

So, Jubula has to somehow hook itself into our RCP application, and we have to help with that: Look for the archive rcp-support.zip in your Jubula installation directory and extract it into your product directory. This will add a Jubula instrumentation plugin to your product.

However, that's not all. You've still got to activate that plugin, and you can do that by editing the configuration/config.ini file in your product directory. There's a long line in that file listing the osgi.bundles, and you have to add the Jubula plugin at the end:Configuring the OSGi bundles

Phew. Now we're really really done with preparing the test object. Of course, for real projects, you'll probably want to automate all these preparations in your build.

Let's start up Jubula and do some testing! - Or wait, actually, let's do that in my next blog post. :)