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)

Reply via email to