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