Почему отказоустойчиво: не выполняется с «mvn verify»? - PullRequest
0 голосов
/ 14 февраля 2019

Почему «failsafe: интеграция-тест» не выполняется автоматически с mvn verify?

Согласно mvn help:describe ... задача «1005 *« интеграл-тест »должна быть привязана к« интеграции »-test "phase:

failsafe:integration-test
  Description: Run integration tests using Surefire.
  Implementation: org.apache.maven.plugin.failsafe.IntegrationTestMojo
  Language: java
  Bound to phase: integration-test

Пока что mvn verify выполняет только" surefire: test ", но не" failsafe: интеграционный тест ".

Я знаю, как это исправить, используя <executions>, как это даже в примерах "Использование" на домашней странице отказоустойчивого плагина, но я хотел бы понять, почему два плагина ведут себя по-разному.

Есть файл, который соответствует обоим <include> шаблонам:

src/test/java/de/lathspell/test/UselessThingTest.java
src/test/java/de/lathspell/test/UselessThingIT.java  

Мой pom.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pom="http://maven.apache.org/POM/4.0.0">
    <modelVersion>4.0.0</modelVersion>

    <groupId>de.lathspell</groupId>
    <artifactId>test1</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
            </plugin>
            <plugin>
                <artifactId>maven-failsafe-plugin</artifactId>
                <version>2.22.1</version>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

Вывод:

[INFO] -------------------------< de.lathspell:test1 >-------------------------
[INFO] Building test1 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ test1 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /mnt/keller_christian/workspace/test1/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ test1 ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ test1 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /mnt/keller_christian/workspace/test1/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ test1 ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ test1 ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running de.lathspell.test.UselessThingTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.048 s - in de.lathspell.test.UselessThingTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ test1 ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

1 Ответ

0 голосов
/ 14 февраля 2019

Простыми вещами является то, что maven-failsafe-plugin по умолчанию не привязан ни к какому жизненному циклу.

Это означает, что вы должны связать это сами в своем проекте один раз.

Документация гласит:

По умолчанию привязка к фазе жизненного цикла: интеграция-тест.

Это означает, что вы должны добавить к жизненному циклуна всех, и тогда плагины будут привязаны к жизненному циклу integration-test.

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>3.0.0-M3</version>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

После этого вы должны выполнить свои интеграционные тесты, просто используя следующее:

mvn clean verify

Обновление: еслиВ документации к плагинам говорится:

По умолчанию привязывается к фазе жизненного цикла: x

это означает, что только если она добавлена ​​к фазе заданного жизненного цикла, если вы добавляетевыполнение, как указано выше , но не определено <phase>..</phaseY>.Это тип по умолчанию, который вы явно не указываете в своей конфигурации pom.

...