0

I have a Eclipse Plugin project where I am trying to create SWTBot Test. The test are running fine. But when i try to run Exit the test runs and give positive result and then throws an error.

@Test
public void executeExit() {
    SWTBotMenu fileMenu = bot.menu("File");
    SWTBotMenu exitMenu = fileMenu.menu("Exit");
    exitMenu.click();
}

Above is my test.

If I remove the test given above the tests and app are running fine. But when I close the app from right above corner with close(X) button, it again shows the error.

Testing // Sysout as given above
!SESSION 2015-02-19 05:22:59.239 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_10
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -version 3 -port 45139 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames 

!ENTRY org.eclipse.gmf.runtime.common.ui 4 0 2015-02-19 05:23:37.924
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Exception in org.eclipse.gmf.runtime.common.ui.internal.CommonUIPlugin.stop() of bundle org.eclipse.gmf.runtime.common.ui.
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:791)
    at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:566)
    at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1206)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:592)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:257)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
    at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:284)
    at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:692)
    at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:600)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:400)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Caused by: org.eclipse.swt.SWTException: Device is disposed
    at org.eclipse.swt.SWT.error(SWT.java:4397)
    at org.eclipse.swt.SWT.error(SWT.java:4312)
    at org.eclipse.swt.SWT.error(SWT.java:4283)
    at org.eclipse.swt.widgets.Display.error(Display.java:1204)
    at org.eclipse.swt.widgets.Display.asyncExec(Display.java:720)
    at org.eclipse.gmf.runtime.common.ui.util.UIModificationValidator.dispose(UIModificationValidator.java:208)
    at org.eclipse.gmf.runtime.common.ui.internal.CommonUIPlugin.stop(CommonUIPlugin.java:83)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
    ... 19 more
Root exception:
org.eclipse.swt.SWTException: Device is disposed
    at org.eclipse.swt.SWT.error(SWT.java:4397)
    at org.eclipse.swt.SWT.error(SWT.java:4312)
    at org.eclipse.swt.SWT.error(SWT.java:4283)
    at org.eclipse.swt.widgets.Display.error(Display.java:1204)
    at org.eclipse.swt.widgets.Display.asyncExec(Display.java:720)
    at org.eclipse.gmf.runtime.common.ui.util.UIModificationValidator.dispose(UIModificationValidator.java:208)
    at org.eclipse.gmf.runtime.common.ui.internal.CommonUIPlugin.stop(CommonUIPlugin.java:83)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
    at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:566)
    at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1206)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:592)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:257)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
    at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:284)
    at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:692)
    at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:600)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:400)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

!ENTRY org.eclipse.emf.ecp.core 4 0 2015-02-19 05:23:38.462
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Exception in org.eclipse.emf.ecp.internal.core.Activator.stop() of bundle org.eclipse.emf.ecp.core.
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:791)
    at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:566)
    at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1206)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:592)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:257)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
    at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:284)
    at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:692)
    at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:600)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:400)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Caused by: java.lang.NullPointerException
    at org.eclipse.emf.ecp.internal.core.Activator.stop(Activator.java:59)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
    ... 19 more
Root exception:
java.lang.NullPointerException
    at org.eclipse.emf.ecp.internal.core.Activator.stop(Activator.java:59)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(BundleContextImpl.java:771)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.stop(BundleContextImpl.java:764)
    at org.eclipse.osgi.framework.internal.core.BundleHost.stopWorker(BundleHost.java:510)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.suspend(AbstractBundle.java:566)
    at org.eclipse.osgi.framework.internal.core.Framework.suspendBundle(Framework.java:1206)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.decFWSL(StartLevelManager.java:592)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:257)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.shutdown(StartLevelManager.java:215)
    at org.eclipse.osgi.framework.internal.core.InternalSystemBundle.suspend(InternalSystemBundle.java:284)
    at org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.java:692)
    at org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:600)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.shutdown(EclipseStarter.java:400)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1426)
Jeevan
  • 447
  • 2
  • 8
  • 19

1 Answers1

0

Eclipse offers two relevant options for running unit tests; 'Run as JUnit Test' and 'Rus as JUnit Plugin Test'. Each will only work for the thing it refers to, so it is normal for selecting the wrong thing to give some meaningless error.

A JUnit Plugin Test is for testing code that closely interacts with the Eclipse environment. If that's what you need to do, then you generally need to follow a tutorial to configure the project & test appropriately.

soru
  • 5,464
  • 26
  • 30
  • Hi, I am trying to run SWTBot test. But as it did not work, I first wanted to try Junit Plugin Test. I have followed pretty much the steps given in your tutorial. I see that when I run as a Plugin Test, the test is running. The program quits only after running the test. – Jeevan Feb 19 '15 at 13:58
  • Presumably something in one or more of your run configuration, project, target platform, workspace or installation is wrong. Can't offer any better advice than to go through them, in that order, deleting and recreating until the problem goes away. – soru Feb 19 '15 at 14:06
  • ok, will try, i tried delete .metadata/.plugins and failed again. – Jeevan Feb 19 '15 at 14:11
  • [SOLVED] created new workspace and tried to run, the error did not appear. It has something to do with my .metadata – Jeevan Feb 27 '15 at 12:52