Тесты для плагинов maven несовместимы с maven 3.0.4 - PullRequest
5 голосов
/ 10 февраля 2012

У меня есть простой тест для плагина maven:

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();
    }
}

с такой maven-surefire-plugin конфигурация:

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

До выхода maven 3.0.4 мой SimpleMavenTest успешно работал. Но когда я запустил тест с использованием maven 3.0.4, произошла следующая ошибка:

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)

Я посмотрел здесь: http://maven.apache.org/plugins/maven-surefire-plugin/examples/class-loading.html и попытался изменить конфигурацию maven-surefire-plugin таким образом:

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

Все отлично работает. Но если я сделаю:

<forkMode>never</forkMode>

Произошла вышеуказанная ошибка. Это странно, потому что на maven 3.0.3 и предыдущих версиях maven тест запускался без ошибок. Есть идеи?

1 Ответ

1 голос
/ 15 февраля 2012

Я открыл ошибку на jira.codehaus.org и получил ответ, что эта проблема была решена в maven-surefire-plugin v.2.11. Поскольку я использовал версию 2.10, произошла ошибка. Последней верной версией плагина является 2.12, поэтому измените верную конфигурацию следующим образом:

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

и тесты пройдут успешно.

...