Почему maven-surefire-plugin пропускает тесты с сообщением журнала "потому что он уже был запущен для этой конфигурации"?

Я не могу понять, почему maven-surefire-plugin не запускает тест jUnit4. Мой pom (не могу добавить его сюда, потому что "похоже, что пост - это в основном код"): http://pastebin.com/Jj3iJZpY

Когда я выполню mvn clean test Окно cmd показывает:

C:\Users\maya\git\services>mvn clean test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building services 1.0.18
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ services ---
[INFO] Deleting C:\Users\maya\git\services\target
[INFO]
[INFO] --- maven-mule-plugin:1.9:attach-test-resources (default-attach-test-resources) @ services ---
[INFO] attaching test resource C:\Users\maya\git\services\src\main\app
[INFO]
[INFO] --- build-helper-maven-plugin:1.7:add-resource (add-resource) @ services ---
[INFO]
[INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ services ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 4 resources
[INFO] Copying 3 resources
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-mule-plugin:1.9:filter-resources (default-filter-resources) @ services ---
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ services ---
[INFO] Compiling 60 source files to C:\Users\maya\git\services\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.7:testResources (default-testResources) @ services ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ services ---
[INFO] Compiling 1 source file to C:\Users\maya\git\services\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.19:test (default-test) @ services ---
[INFO]
[INFO] --- maven-surefire-plugin:2.19:test (default) @ services ---
[INFO] Skipping execution of surefire because it has already been run for this configuration
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 8.554 s
[INFO] Finished at: 2015-12-11T15:48:05+03:00
[INFO] Final Memory: 48M/312M
[INFO] ------------------------------------------------------------------------

Тестовый класс:

  package com.comp.utils.UtilsTest;

    import static org.junit.Assert.assertTrue;
    import org.apache.log4j.Logger;
    import org.junit.Test;



    public class UtilsTest {
         private static final Logger LOG = Logger.getLogger(UtilsTest.class.getName());


        @Test
        public void testHasPersonSameProd() {


             boolean hasSameProduct = false;

            assertTrue("Should be True", hasSameProduct);
        }
    }

Почему maven-surefire-plugin:2.19 запускается дважды и не хочет запускать мой тестовый класс? Как запустить тест в моем случае? Спасибо.

1 ответ

Решение

Учитывая ссылку, которую вы связали (которая должна быть включена в вопрос на самом деле, поскольку в будущем ссылка может быть разорвана):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <executions>
            <execution>
                    <goals>
                            <goal>test</goal>
                    </goals>
            </execution>
    </executions>


    <dependencies>
            <dependency>
                    <groupId>org.apache.maven.surefire</groupId>
                    <artifactId>surefire-junit47</artifactId>
                    <version>2.19</version>
            </dependency>
    </dependencies>

    <configuration>
            <includes>
                    <include>UtilTest.java</include>
            </includes>
    </configuration>
</plugin>
  • Плагин Maven Surefire запускается дважды, потому что вы настроили дополнительное выполнение плагина, не предоставляя id элемент и как таковой по умолчанию он называется default (maven-surefire-plugin:2.19:test (default)). Это выполнение выполняется после готовой конфигурации Maven для Surefire (maven-surefire-plugin:2.19:test (default-test)). Итак, как следствие, у вас есть два казни (default а также default-test). Удаление executions раздел о конфигурации плагина Surefire у вас будет только одно исполнение (default-test).
  • У вас также есть опечатка в конфигурации Surefire, <include>UtilTest.java</include> Конфигурация указывает на UtilTest.java класс, а в вашем вопросе он называется UtilsTest (обратите внимание на дополнительные 's').
  • Если тестовый класс находится под src/test/java папку, то вам не нужно настраивать его включение, так как он также уже следует стандартному соглашению Surefire, "**/*Test.java",
  • Сообщение, которое вы получаете (Skipping execution of surefire because it has already been run for this configuration) потому что ваш configuration Элемент для плагина Surefire находится за пределами любого executions элемент, что означает, применяется ко всем выполнениям плагина, даже по умолчанию (default-test).

Таким образом, вы можете удалить весь раздел плагинов Surefire из pom, и проблема должна быть решена.

Другие вопросы по тегам