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. _______________________________________________ osmosis-dev mailing list [email protected] http://lists.openstreetmap.org/listinfo/osmosis-dev
