Почему 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 запускается дважды и не хочет запускать мой тестовый класс? Как запустить тест в моем случае? Спасибо.


person May12    schedule 11.12.2015    source источник


Ответы (1)


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

<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, и проблема должна быть исправлена.

person A_Di-Matteo    schedule 11.12.2015
comment
Спасибо. Ошибка была в <include>UtilTest.java</include>. Должно быть ‹include›UtilTests.java‹/include› - person May12; 11.12.2015