Reputation: 61
does anyone know how to programmatically start an Eclipse IApplication?
It is an commandline Application and I want to write unit tests for it.
It should work so:
org.eclipse.equinox.app.IApplication app = new myApp();
try {
app.start(???);
} catch (Exception e) {
e.printStackTrace();
}
The start method requires an IApplicationContext.
Where do I get this?
Thanks a lot for help
Upvotes: 6
Views: 1771
Reputation: 2964
You launch such applications using the OSGi ApplicationDescriptor service. In Equinox, each of the org.eclipse.core.runtime.applications
is turned into an ApplicationDescriptor instance. You then launch an instance using the ApplicationDescriptor.launch(Map)
method. The Eclipse Help provides a very broad if brief description, and be sure to read about the application cardinality on the Eclipsepedia.
Upvotes: 2
Reputation: 13858
It does not seem the right way to start the application programmatically for unit testing.
Instead, you could write Eclipse plug-in tests, and they can launch the required OSGi container, where you can initialize your tests. Of course, you have to do some manual initialization, that are related to providing the corresponding test suite - but in that case you could manually call your code instead of relying an external launch process.
Take a look at the following FAQ entry http://wiki.eclipse.org/FAQ_What_is_a_PDE_JUnit_test%3F for details
.
Upvotes: 1