Как запустить интеграционные тесты плагина maven? - PullRequest
0 голосов
/ 03 марта 2019

Я сгенерировал проект подключаемого модуля maven с использованием архетипа maven-archetype-plugin.

Я изменил сгенерированный интеграционный тест src/it/simple-it/verify.groovy, чтобы он не удался:

    assert false

Затем я вызвал:

$ mvn clean install invoker:integration-test invoker:verify

И мой assert false тест пройден:

[INFO] Installing /home/peter/ownCloud/Personal/eclipse-workspace/my-plugin/target/my-plugin-1.0-SNAPSHOT.jar to /home/peter/.m2/repository/org/example/my-plugin/1.0-SNAPSHOT/my-plugin-1.0-SNAPSHOT.jar
[INFO] Installing /home/peter/ownCloud/Personal/eclipse-workspace/my-plugin/pom.xml to /home/peter/.m2/repository/org/example/my-plugin/1.0-SNAPSHOT/my-plugin-1.0-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-invoker-plugin:3.1.0:integration-test (default-cli) @ my-plugin ---
[INFO] Building: simple-it/pom.xml
[INFO]           simple-it/pom.xml ................................ SUCCESS (13.4 s)
[INFO] 
[INFO] --- maven-invoker-plugin:3.1.0:verify (default-cli) @ my-plugin ---
[INFO] -------------------------------------------------
[INFO] Build Summary:
[INFO]   Passed: 1, Failed: 0, Errors: 0, Skipped: 0
[INFO] -------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 34.975 s
[INFO] Finished at: 2019-03-03T08:23:34-04:00
[INFO] Final Memory: 38M/441M
[INFO] ------------------------------------------------------------------------

Очевидно, что тест фактически не вызывался.Чего мне не хватает?

Чтобы продемонстрировать проблему, я создал простой сценарий оболочки:

#!/bin/bash

rm -rf my-plugin
mvn archetype:generate -DgroupId=org.example -DartifactId=my-plugin -DarchetypeArtifactId=maven-archetype-plugin -DarchetypeVersion=1.4 -DinteractiveMode=false
cd my-plugin
echo assert false > src/it/simple-it/verify.groovy
mvn clean install invoker:integration-test invoker:verify

Я считаю, что этот сценарий должен завершиться с ошибкой в ​​последней строке, когда invoker:убедитесь, что цель достигнута, и maven выполняет verify.groovy, что буквально означает assert false.

1 Ответ

0 голосов
/ 05 марта 2019

Генератор архетипов создает отдельный профиль для интеграционных тестов, который по умолчанию отключен.Вам нужно будет включить этот профиль, выполнив:

mvn clean verify -Prun-its

Тогда ваш тест не пройдёт.

Вы можете изменить POM, чтобы включить этот профиль по умолчанию, добавив следующее:

<activation>
    <activeByDefault>true</activeByDefault>
</activation>

Тогда полный блок профилей будет иметь вид:

<profiles>
    <profile>
        <id>run-its</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-invoker-plugin</artifactId>
                    <version>3.1.0</version>
                    <configuration>
                        <debug>true</debug>
                        <cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
                        <pomIncludes>
                            <pomInclude>*/pom.xml</pomInclude>
                        </pomIncludes>
                        <postBuildHookScript>verify</postBuildHookScript>
                        <localRepositoryPath>${project.build.directory}/local-repo</localRepositoryPath>
                        <settingsFile>src/it/settings.xml</settingsFile>
                        <goals>
                            <goal>clean</goal>
                            <goal>test-compile</goal>
                        </goals>
                    </configuration>
                    <executions>
                        <execution>
                            <id>integration-test</id>
                            <goals>
                                <goal>install</goal>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

. На этом этапе вам нужно будет только выполнить:

mvn clean verify

, и он также завершится ошибкой, так как ITтесты теперь запускаются по умолчанию.

Для получения дополнительной информации о профилях сборки Maven см. Здесь .

...