Search code examples
eclipseunit-testingeclipse-rcptychoswtbot

How to (automatedly) test different ways to close an application with SWTBot (with Tycho)


Probably there is a simple answer to this, but I'm finding it hard to figure it out myself: How can I test different ways to exit an application with SWTBot?

In my application based on the Eclipse RCP 3.x, you can close the application in three different ways:

  1. Per mouse click on menu items (File > Exit)
  2. Per keyboard shortcuts on a menu (Alt+F X)
  3. Per shortcut (Ctrl+Q)

I'm currently writing unit tests for this behaviour with the help of SWTBot. Running them I have a simple and very real problem: Once one way of closing the application is tested, the application is closed and hence all the other tests fail.

All tests are currently residing in one test class.

My question therefore is: How can I run all tests successfully, from Eclipse for starters. But also: How can I have them run by Tycho during the build, so that following tests won't automatically fail due to the application not being open anymore?


Solution

  • In short, you cannot test closing an application with SWTBot.

    As you already found out, closing the application will terminate the VM as well. And since your tests run in the same VM as the application under test, the tests will be terminated as well.

    Aside from these implications, you shouldn't test closing an application. The three ways to close an application that you mention are all provided by the platform and hence the platform should have tests for that functionality, not your application.