[osmosis-dev] Osmosis plugin development and integration tests
Nicolas Colomer
ncolomer at ymail.com
Fri Jan 11 22:33:43 GMT 2013
Hi Osmosis community!
I have a question about plugin development: I am currently working on a
plugin and reach the point where I need to make integration test on small
OSM data sets. Such integration tests will allow me to check the plugin
behavior with more complex data than mocked entities.
By integration test, I mean start Osmosis programmatically in a JUnit test
case, somehow declare my plugin, and finally crunch and process OSM files. I
saw in the Osmosis source code that such tests exist: the best example I
found is TagTransformTest.java
(https://github.com/openstreetmap/osmosis/blob/master/tagtransform/src/test/java/org/openstreetmap/osmosis/tagtransform/v0_6/TagTransformTest.java)
So I tried to reproduce these tests but I face some class loading issue
(always the same Exception, even for simple commands that involve only xml
reading / writing):
java.lang.NoClassDefFoundError: org/java/plugin/PluginLifecycleException
at org.openstreetmap.osmosis.core.Osmosis.run(Osmosis.java:80)
at
org.openstreetmap.osmosis.plugin.elasticsearch.integration.PluginITest.testTransform(PluginITest.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.ClassNotFoundException:
org.java.plugin.PluginLifecycleException
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 25 more
Do you have any idea to solve this?
How declare and load my plugin programmatically so that I can use it via
command parameters? Do I have to add some resources in my classpath (as for
Osmosis, when you declare pluginLoader class in the
$OSMOSIS_HOME/config/osmosis-plugins.conf file)?
Thanks in advance for you answers!
Best regards,
Nicolas
--
View this message in context: http://gis.19327.n5.nabble.com/Osmosis-plugin-development-and-integration-tests-tp5744049.html
Sent from the Osmosis Development mailing list archive at Nabble.com.
More information about the osmosis-dev
mailing list