Home » Eclipse RCP

Archiv der Kategorie: Eclipse RCP

Eclipse RCP JUnit tests with SWT checks

The basing question:
How to do JUnit tests for RCP classes that create SWT GUI?

Vorgehen/Hinweise:

  • The „Run As“ dialog of Eclipse offers a „Run as Plugin“ option which must be used if OSGI features are used in the test.
  • If OSGI features are needed (e.g. an OSGI service is part of the game) than OSGI a BundleContext  has to be set up. Read OSGI Component Testing (Integration testing / “black-box-testing”) and perhaps OSGI BundleContext.java.
    If this is done, then a Bundle can be invoked/setup by FrameworkUtil.getBundle(AnyClassInTheTestPlugin.java)

To read:

OSGI Component Testing

OSGI BundleContext.java    –> siehe Mindmap unten!

Eclipse-test-plugin

Testing OSGI Based Applications –> PDF Version

Bundle Context

 

Setting up Eclipse like context for dependency injection:

If the class A has an annotation like

@Inject
C c;

Then a class A can be retrieved that has an object of C already injected like that:

IEclipseContext context = EclipseContextFactory.create("test context");
context.set(C.class, new C(...));
A a = ContextInjectionFactory.make(A.class, context);

 

Problem while running on Linux Jenkins

org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]

 

xxx

Eclipse RCP – Minimize/Maximized/Restored status abfragen

Expansionsstatus kann wie folgt abgefragt werden.

MUIElement partStack = modelService.find("my.part.stack", application);
partStack.getTags().add(IPresentationEngine.MINIMIZED);
partStack.setVisible(false);

Abgesrieben aus -> link

Eclipse RCP – Lifecycle Hooks

Was sind die verschiedenen Möglichkeiten zu einem bestimmten Zeitpunkt in den Lauf einer Eclipse RCP Applikation einzugreifen?

  1.  Zu beginn der Bundle-Aktivierung: Im Bundle Activator.
  2. AddOn, Methode mit UIEventTipic markieren, z.B.
  3. Lifecycle-Klasse registieren
  4. Innerhalb des Model Processors
    Der Model Processor ist jedoch eigentlich für das Anpassen des Application Models gedacht.
    –> Siehe auch Model Processor (2)

In welchem Plugin is meine Eclipse RCP Klasse

Funktioniert nur für von Eclipse bereitgestellte Bundles:

https://download.eclipse.org/ → Da kann man nach einer Klasse suchen

Oder ein listing der Eclipse Bundles: https://git.eclipse.org/c/platform/eclipse.platform.ui.git/plain/bundles

Eclipse RCP OSGI – Readings

Sehr schön:

https://www.ibm.com/developerworks/library/os-ecl-osgi/index.html

 

Allenfalls:

https://www.vogella.com/tutorials/OSGi/article.html

https://www.vogella.com/tutorials/EclipseTycho/article.html

 

OSGI – Dependency Visualisierung

Dependency Visualization

Cool Views to control Plug-ins (IDE)

Im übrigen legt der maven build auch irgendwo ein repository an mit einem content.xml file, welches in konzentrierter Form über die Interdependenzen auskunft gibt. Aber leider nicht über die aktuell zusammengewobenen Artifacte sonder über die requirements aller Artifacte. Irgenwo auf einem Pfad, der etwa so aussehen könnte:

repository\target\targetPlatformRepository\content.xml