Sam Corbett created MPLUGINTESTING-45: -----------------------------------------
Summary: Use of MojoRule causes Guice injection error Key: MPLUGINTESTING-45 URL: https://jira.codehaus.org/browse/MPLUGINTESTING-45 Project: Maven Plugin Testing Issue Type: Bug Reporter: Sam Corbett I'm trying to write some tests for a plugin. I am using: * Maven version 3.2.3 * maven-plugin-testing-harness version 3.2.0 * JUnit version 4.12 I'm following the instructions at http://maven.apache.org/plugin-testing/maven-plugin-testing-harness/getting-started/index.html that may or may not be out of date. Any use of the {{MojoRule}} class causes all tests to fail with a Guice injection error. For example, this useless class: {code} package io.brooklyn.maven; import org.apache.maven.plugin.testing.MojoRule; import org.junit.Rule; import org.junit.Test; public class FakeTest { @Rule public MojoRule mojoRule = new MojoRule() { @Override protected void after() { super.after(); } @Override protected void before() throws Throwable { super.before(); } }; @Test public void testNothing() { } } {code} fails with: {code} Running io.brooklyn.maven.FakeTest Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.04 sec <<< FAILURE! testNothing(io.brooklyn.maven.FakeTest) Time elapsed: 0.934 sec <<< ERROR! com.google.inject.CreationException: Unable to create injector, see the following errors: 1) Scope org.apache.maven.execution.scope.internal.MojoExecutionScope@eac4a5f is already bound to org.apache.maven.execution.scope.MojoExecutionScoped at org.apache.maven.plugin. testing.AbstractMojoTestCase$1.configure(AbstractMojoTestCase.java:236) (via modules: org.eclipse.sisu.wire.WireModule -> org.codehaus.plexus.DefaultPlexusContainer$BootModule -> org.apache.maven.plugin.testing.AbstractMojoTestCase$1). Cannot bind org.apache.maven.execution.scope.internal.MojoExecutionScope@5146aa7f. at ClassRealm[plexus.core, parent: null] (via modules: org.eclipse.sisu.wire.WireModule -> org.eclipse.sisu.plexus.PlexusBindingModule -> org.apache.maven.execution.scope.inter nal.MojoExecutionScopeCoreModule) 1 error at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:448) at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:155) at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107) at com.google.inject.Guice.createInjector(Guice.java:96) at com.google.inject.Guice.createInjector(Guice.java:73) at com.google.inject.Guice.createInjector(Guice.java:62) at org.codehaus.plexus.DefaultPlexusContainer.addPlexusInjector(DefaultPlexusContainer.java:481) at org.codehaus.plexus.DefaultPlexusContainer.<init>(DefaultPlexusContainer.java:206) at org.apache.maven.plugin.testing.AbstractMojoTestCase.setupContainer(AbstractMojoTestCase.java:243) at org.apache.maven.plugin.testing.AbstractMojoTestCase.getContainer(AbstractMojoTestCase.java:277) at org.apache.maven.plugin.testing.AbstractMojoTestCase.setUp(AbstractMojoTestCase.java:118) at org.apache.maven.plugin.testing.MojoRule$2.evaluate(MojoRule.java:304) at org.junit.rules.RunRules.evaluate(RunRules.java:20) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252) at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141) at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189) at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165) at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85) at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115) at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75) {code} -- This message was sent by Atlassian JIRA (v6.1.6#6162)