It's not unusual to have to patch up manual run configurations. For examples, mvn runs unit tests in the 'target' directory, which you need to set manually if creating individual run targets.
On 18 August 2010 19:12, Bartosz Kowalewski <[email protected]>wrote: > Hi Alexandros, > > It's weird that you needed to modify configuration manually. I've just > run 'mvn eclipse:eclipse' for the Bluperint itests project and > imported it to Eclipse. The .classpath file conatins this line: > <classpathentry kind="src" path="src/test/java" > output="target/test-classes" including="**/*.java"/> > Junit tests run just fine. I did not need to change the launch > configuration. The only issue is that Eclipse rebuilds the project > that is being imported, so the dependencies.properties file gets > removed. I needed to generate it once again before running tests from > Eclipse. > > Oh, there's one more issue. The maven-paxexam-plugin seems to > incorrectly generate the .properties file. Resolved snapshot versions > are sometimes used instead of the base ones. This is similar to > ARIES-364 which was related to servicemix-depends-plugin. I'll take a > closer look at it. > > Thanks, > Bartek > > 2010/8/18 Alexandros Karypidis <[email protected]>: > > Actually, it makes sense now. I'm looking at the "Java Build Path" of the > > project (as generated by "mvn eclipse:eclipse") and there is nothing that > > would result in the folder "target/test-classes" being in the launch > > configuration's classpath (it is not exported). I edited the launch > > configuration that was created for the JUnit test, adding the > > "target/test-classes" folder and the problem was resolved. Thanks for > > helping out. > > > > On 18/8/2010 20:45, Alexandros Karypidis wrote: > >> > >> Actually, I just found it at: > >> > >> C:\aries\trunk\blueprint\blueprint-itests>dir > >> target\test-classes\META-INF\maven > >> Volume in drive C has no label. > >> Volume Serial Number is DEDC-167F > >> > >> Directory of > >> > C:\aries\trunk\blueprint\blueprint-itests\target\test-classes\META-INF\maven > >> > >> 18/08/2010 20:31 <DIR> . > >> 18/08/2010 20:31 <DIR> .. > >> 18/08/2010 20:31 6.882 dependencies.properties > >> 1 File(s) 6.882 bytes > >> > >> I still can't run the test from within Eclipse though: > >> > >> java.lang.reflect.InvocationTargetException > >> 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.ops4j.pax.exam.junit.internal.DefaultConfigMethod.getOptions(DefaultConfigMethod.java:133) > >> at > >> > org.ops4j.pax.exam.junit.JUnit4TestRunner.getOptions(JUnit4TestRunner.java:347) > >> at > >> > org.ops4j.pax.exam.junit.JUnit4TestRunner.getTestMethods(JUnit4TestRunner.java:97) > >> at > >> > org.ops4j.pax.exam.junit.JUnit4TestRunner.<init>(JUnit4TestRunner.java:80) > >> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native > >> Method) > >> at > >> > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) > >> at > >> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) > >> at java.lang.reflect.Constructor.newInstance(Constructor.java:513) > >> at > >> > org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31) > >> at > >> > org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24) > >> at > >> > org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) > >> at > >> > org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) > >> at > >> > org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) > >> at > >> org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) > >> at > >> > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:29) > >> at > >> > org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25) > >> at > >> > org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:40) > >> at > >> > org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:30) > >> at > >> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) > >> 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.RuntimeException: Could not resolve version. Did > you > >> configured the plugin in your maven project?Or maybe you did not run the > >> maven build and you are using an IDE? > >> at > org.ops4j.pax.exam.MavenUtils.getArtifactVersion(MavenUtils.java:79) > >> at org.ops4j.pax.exam.MavenUtils$1.getVersion(MavenUtils.java:102) > >> at > >> > org.ops4j.pax.exam.options.MavenArtifactUrlReference.version(MavenArtifactUrlReference.java:110) > >> at > >> > org.ops4j.pax.exam.options.MavenArtifactUrlReference.versionAsInProject(MavenArtifactUrlReference.java:118) > >> at > >> > org.ops4j.pax.exam.options.MavenArtifactUrlReference.versionAsInProject(MavenArtifactUrlReference.java:29) > >> at > >> > org.ops4j.pax.exam.options.MavenArtifactProvisionOption.versionAsInProject(MavenArtifactProvisionOption.java:121) > >> at > >> > org.apache.aries.blueprint.itests.AbstractIntegrationTest.mavenBundle(AbstractIntegrationTest.java:152) > >> at > >> > org.apache.aries.blueprint.itests.BlueprintContainer2BTCustomizerTest.configuration(BlueprintContainer2BTCustomizerTest.java:116) > >> ... 26 more > >> > >> > >> > >> On 18/8/2010 20:41, Alexandros Karypidis wrote: > >>> > >>> Thanks for taking the time to explain this. However, I am getting the > >>> error even though I have successfully completed an "mvn install" (which > >>> surely should have generated that file). For example, I just ran an > "mvn > >>> test" in blueprint-itests: > >>> > >>> C:\aries\trunk\blueprint\blueprint-itests>mvn test > >>> [INFO] Scanning for projects... > >>> [INFO] > >>> > ------------------------------------------------------------------------ > >>> [INFO] Building Apache Aries Blueprint iTests > >>> [INFO] task-segment: [test] > >>> [INFO] > >>> > ------------------------------------------------------------------------ > >>> [INFO] [enforcer:enforce {execution: default}] > >>> [INFO] [antrun:run {execution: create-prop}] > >>> [INFO] Executing tasks > >>> [echo] Maven version: 0.3-incubating-SNAPSHOT > >>> [echo] OSGi version: 0.3.0.incubating-SNAPSHOT > >>> [INFO] Executed tasks > >>> [INFO] [properties:read-project-properties {execution: default}] > >>> [INFO] Setting property: classpath.resource.loader.class => > >>> 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'. > >>> [INFO] Setting property: velocimacro.messages.on => 'false'. > >>> [INFO] Setting property: resource.loader => 'classpath'. > >>> [INFO] Setting property: resource.manager.logwhenfound => 'false'. > >>> [INFO] [remote-resources:process {execution: default}] > >>> [INFO] [paxexam:generate-depends-file {execution: generate-config}] > >>> [INFO] Created: > >>> > C:\aries\trunk\blueprint\blueprint-itests\target\test-classes\META-INF\maven\dependencies.properties > >>> [INFO] [resources:resources {execution: default-resources}] > >>> [INFO] Using 'UTF-8' encoding to copy filtered resources. > >>> [INFO] skip non existing resourceDirectory > >>> C:\aries\trunk\blueprint\blueprint-itests\src\main\resources > >>> [INFO] skip non existing resourceDirectory > >>> C:\aries\trunk\blueprint\blueprint-itests\src\main\filtered-resources > >>> [INFO] Copying 4 resources > >>> [INFO] [compiler:compile {execution: default-compile}] > >>> [INFO] No sources to compile > >>> [INFO] [resources:testResources {execution: default-testResources}] > >>> [INFO] Using 'UTF-8' encoding to copy filtered resources. > >>> [INFO] Copying 1 resource > >>> [INFO] skip non existing resourceDirectory > >>> C:\aries\trunk\blueprint\blueprint-itests\src\test\filtered-resources > >>> [INFO] Copying 4 resources > >>> [INFO] [compiler:testCompile {execution: default-testCompile}] > >>> [INFO] Nothing to compile - all classes are up to date > >>> [INFO] [surefire:test {execution: default-test}] > >>> [INFO] Surefire report directory: > >>> C:\aries\trunk\blueprint\blueprint-itests\target\surefire-reports > >>> > >>> ------------------------------------------------------- > >>> T E S T S > >>> ------------------------------------------------------- > >>> Running org.apache.aries.blueprint.itests.TestRegistrationListener > >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 2.258 > sec > >>> Running org.apache.aries.blueprint.itests.MultiBundleWithAsmTest > >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.556 > sec > >>> Running org.apache.aries.blueprint.itests.BlueprintContainerTest > >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.834 > sec > >>> Running org.apache.aries.blueprint.itests.TestConfigAdmin > >>> Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 17.511 > >>> sec > >>> Running > >>> org.apache.aries.blueprint.itests.BlueprintContainerBTCustomizerTest > >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.502 > sec > >>> Running org.apache.aries.blueprint.itests.BlueprintContainer2Test > >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 8.122 > sec > >>> Running > >>> org.apache.aries.blueprint.itests.BlueprintContainer2BTCustomizerTest > >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 6.934 > sec > >>> Running org.apache.aries.blueprint.itests.MultiBundleWithCgLibTest > >>> Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.47 > sec > >>> Running org.apache.aries.blueprint.itests.TestReferences > >>> Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.333 > sec > >>> > >>> Results : > >>> > >>> Tests run: 13, Failures: 0, Errors: 0, Skipped: 0 > >>> > >>> [INFO] > >>> > ------------------------------------------------------------------------ > >>> [INFO] BUILD SUCCESSFUL > >>> [INFO] > >>> > ------------------------------------------------------------------------ > >>> [INFO] Total time: 1 minute 9 seconds > >>> [INFO] Finished at: Wed Aug 18 20:32:59 EEST 2010 > >>> [INFO] Final Memory: 28M/67M > >>> [INFO] > >>> > ------------------------------------------------------------------------ > >>> > >>> Immediately afterwards (and without even launching Eclipse), I checked > >>> for the file, but it was not generated: > >>> > >>> C:\aries\trunk\blueprint\blueprint-itests>dir target\classes\META-INF > >>> Volume in drive C has no label. > >>> Volume Serial Number is DEDC-167F > >>> > >>> Directory of > >>> C:\aries\trunk\blueprint\blueprint-itests\target\classes\META-INF > >>> > >>> 18/08/2010 20:32 <DIR> . > >>> 18/08/2010 20:32 <DIR> .. > >>> 18/08/2010 20:31 572 DEPENDENCIES > >>> 18/08/2010 20:31 562 DISCLAIMER > >>> 18/08/2010 20:31 11.358 LICENSE > >>> 18/08/2010 20:31 186 NOTICE > >>> 4 File(s) 12.678 bytes > >>> > >>> On 18/8/2010 19:42, Bartosz Kowalewski wrote: > >>>> > >>>> Hi, > >>>> > >>>> As Lin said, Pax Exam tests are just ordinary JUnit tests and can be > >>>> run from Eclipse w/o any additional tweaking. Unfortunately, there's > >>>> one little catch that is introduced by Pax Exam configuration used in > >>>> Aries itests projects. That is why you're observing this weird error. > >>>> > >>>> These tests need to download Maven artifacts. Versions of these > >>>> artifacts are not specified inside the Pax Exam tests. It is so, > >>>> because it's cleaner to keep those versions in a single location - in > >>>> pom.xml (and not in both pom.xml and JUnit test). The issue is that > >>>> Pax Exam tests do not have access to pom.xml. That is why, during a > >>>> build of an itests project, a properties file with all details on > >>>> artifacts that are dependencies of the itests project is being > >>>> generated. This is done using ServiceMix's Mojo - depends-maven-plugin > >>>> - or a similar Mojo from OPS4J Pax (I don't remember its name). The > >>>> file is being added to target\classes\META-INF\maven\ and is named > >>>> dependencies.properties. > >>>> > >>>> Conclusion: You need to run a Maven build to have this file generated. > >>>> If it's present, you'll be able to run tests from Eclipse until this > >>>> file is deleted (when running 'mvn clean' or by Eclipse itself). Oh, > >>>> one more thing - this plugin should attached to the > >>>> 'generate-resources' phase of a Maven lifecycle, so it should be > >>>> enough to just run this Maven phase and then invoke tests from > >>>> Eclipse. > >>>> > >>>> Thanks, > >>>> Bartek > >>>> > >>>> 2010/8/18 Lin Sun<[email protected]>: > >>>>> > >>>>> Hi, > >>>>> > >>>>> Are you trying to run the itests from Eclipse or just the junit tests > >>>>> from Eclipse? > >>>>> > >>>>> I personally have never run the itests from Eclipse, but running > junit > >>>>> tests from Eclipse should be doable. > >>>>> > >>>>> Lin > >>>>> > >>>>> On Wed, Aug 18, 2010 at 11:38 AM, Alexandros Karypidis > >>>>> <[email protected]> wrote: > >>>>>> > >>>>>> Hi, > >>>>>> > >>>>>> I'm trying to run the integration tests from within Eclipse. I've > >>>>>> never used > >>>>>> pax-exam before. As far as I can understand I need to configure > >>>>>> pax-exam to > >>>>>> create an OSGi container in order to deply the test bundle. What > kind > >>>>>> of > >>>>>> launch configuration should I use in Eclispe to have the test run > >>>>>> within an > >>>>>> Equinox instance? My workspace has all Aries modules in it, imported > >>>>>> from an > >>>>>> "mvn eclipse:eclipse" after a successful build. > >>>>>> > >>>>>> Thanks, > >>>>>> Alexander > >>>>>> > >>>>>> > >>>>>> > > > > >
