2012-02-10 27 views
5

Ho un semplice test per il plugin Maven:I test per Maven plugin sono incompatibili con Maven 3.0.4

public class SimpleMavenTest extends AbstractMojoTestCase { 

    @Override 
    protected void setUp() throws Exception { 
     super.setUp(); 
     // code 
    } 

    public void testCase() throws Exception { 
     // test case 
    } 

    @Override 
    protected void tearDown() throws Exception { 
     // code 
     super.tearDown(); 
    } 
} 

con tale maven-surefire-plugin configurazione:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
     <forkMode>never</forkMode> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

Fino Maven 3.0.4 è stato rilasciato , il mio SimpleMavenTest funziona con successo. Ma quando ho eseguito il test utilizzando Maven 3.0.4, è stato verificato l'errore seguente:

java.lang.IllegalStateException: The internal default plexus-bootstrap.xml is missing. This is highly irregular, your plexus JAR is most likely corrupt. 
    at org.codehaus.plexus.DefaultPlexusContainer.initializeConfiguration(DefaultPlexusContainer.java:1052) 
    at org.codehaus.plexus.DefaultPlexusContainer.initialize(DefaultPlexusContainer.java:627) 
    at org.codehaus.plexus.PlexusTestCase.setUp(PlexusTestCase.java:119) 
    at org.apache.maven.plugin.testing.AbstractMojoTestCase.setUp(AbstractMojoTestCase.java:69) 
    at org.maven.test.MyMojoTest.setUp(MyMojoTest.java:12) 
    at junit.framework.TestCase.runBare(TestCase.java:128) 
    at junit.framework.TestResult$1.protect(TestResult.java:106) 
    at junit.framework.TestResult.runProtected(TestResult.java:124) 
    at junit.framework.TestResult.run(TestResult.java:109) 
    at junit.framework.TestCase.run(TestCase.java:120) 
    at junit.framework.TestSuite.runTest(TestSuite.java:230) 
    at junit.framework.TestSuite.run(TestSuite.java:225) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 

ho guardato qui: http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html e ha cercato di cambiare Maven-infallibile-plug di configurazione in modo tale:

<configuration> 
     <forkMode>once</forkMode> 
</configuration> 

Tutto funziona correttamente. Ma se faccio:

<forkMode>never</forkMode> 

si è verificato l'errore precedente. È strano, perché su Maven 3.0.3 e precedenti versioni di Maven il test è stato eseguito senza errori. Qualche idea?

+1

Ho la configurazione simile ma ho le informazioni sulla versione sulla mia configurazione di surefire che è elencata come questa $ {surefire.version}. non sono sicuro che potrebbe essere d'aiuto puoi provarlo? – Venki

+0

hai una voce per questo ID di gruppo nel tuo pom? org.apache.maven.wagon Venki

+0

Ho provato ad aggiungere $ {surefire.version}, ma l'errore si è verificato di nuovo. Ho questa voce: org.apache.maven.plugins. Ho sostituito con la tua prova: org.apache.maven.wagon e prova di funzionamento succesfylly. Grazie per l'aiuto! Ma ho bisogno funziona con org.apache.maven.plugins e come ho scritto sopra, è interessante: perché funziona su Maven 3.0.3 e non funziona su Maven 3.0.4. – rdiachenko

risposta

1

Ho aperto a bug su jira.codehaus.org e ho ottenuto la risposta che questo problema è stato risolto in maven-surefire-plugin v.2.11. Come ho usato la versione 2.10, si è verificato l'errore. L'ultima versione del plugin surefire è la 2.12, quindi cambia la configurazione del surefire come segue:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.12</version> 
    <configuration> 
     <forkMode>never</forkMode> 
    </configuration> 
</plugin> 

ei test verranno eseguiti correttamente.

+0

Grazie amico, Ive mi ha colpito la testa con questo tutto il giorno –