Maven - добавление интеграционных тестов

пытаюсь разделить мои тесты в сборке Maven на тесты Unit и Integration.

Я использую отказоустойчивый плагин для запуска тестов интеграции и пытаюсь использовать build-helper-maven-plugin для добавления тестов интеграции из каталога src / it / java.

Я получаю сообщение об ошибке, когда пытаюсь выполнить сборку и не вижу причины, путь к моему источнику Integration Test выглядит правильным из корневой папки модуля.

[ERROR] Failed to execute goal org.codehaus.mojo:build-helper-maven-plugin:3.0.0:add-test-source (add-test-resource) on project XXXX: The parameters 'sources' for goal org.codehaus.mojo:build-helper-maven-plugin:3.0.0:add-test-source are missing or invalid -> [Help 1]

Любые идеи будут более чем приветствоваться. Спасибо

<plugin>
   <groupId>org.codehaus.mojo</groupId>
      <artifactId>build-helper-maven-plugin</artifactId>
      <version>3.0.0</version>
      <executions>
         <execution>
            <id>add-test-source</id>
            <phase>generate-test-sources</phase>
            <goals>
               <goal>add-test-source</goal>
            </goals>
            <configuration>
               <sources>
                  <source>src/it/java</source>
               </sources>
            </configuration>
        </execution>
        <execution>
           <id>add-test-resource</id>
           <phase>generate-test-sources</phase>
           <goals>
              <goal>add-test-source</goal>
           </goals>
           <configuration>
              <resources>
                <resource>
                  <directory>src/it/resources</directory>
                </resource>
              </resources>
           </configuration>
       </execution>
    </executions>
</plugin>

Трассировки стека:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:build-helper-maven-plugin:3.0.0:add-test-source (add-test-resource) on project XXXX: The parameters 'sources' for goal org.codehaus.mojo:build-helper-maven-plugin:3.0.0:add-test-source are missing or invalid
  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
  at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
  at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
  at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
  at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
  at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
  at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
  at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
  at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:498)
  at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
  at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
  at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
  at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginParameterException: The parameters 'sources' for goal org.codehaus.mojo:build-helper-maven-plugin:3.0.0:add-test-source are missing or invalid
  at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:643)
  at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:596)
  at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:121)
  at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)

person hexkid    schedule 19.10.2017    source источник
comment
Не добавляйте отдельный путь для интеграционных тестов, придерживайтесь src / test / java ... только на основе схемы именования ... * IT.java - это интеграционный тест, тогда как * Test.java - это модульный тест ....   -  person khmarbaise    schedule 19.10.2017
comment
Я бы предпочел явно разделить модульные тесты и тесты интеграции, поскольку они также полагаются на отдельный набор файлов тестовых ресурсов.   -  person hexkid    schedule 19.10.2017
comment
Файлы ресурсов могут находиться в src/test/resources? Так в чем же проблема?   -  person khmarbaise    schedule 20.10.2017
comment
Проблема возникла из-за конфликта имен ресурсов, используемых для модульных и интеграционных тестов. Мы решили проблему и приняли ваш подход, но все же предпочли бы физически разделить две тестовые базы.   -  person hexkid    schedule 20.10.2017
comment
Если вам действительно нужно разделить путь к классам для тестирования, самый чистый способ - создать отдельные модули, которые содержат только часть интеграционных тестов ...   -  person khmarbaise    schedule 20.10.2017
comment
Можете попробовать объединить две казни? 1) У казней одинаковый идентификатор. 2) Трассировка стека указывает, что sources - это служебное поле.   -  person asbachb    schedule 23.10.2017


Ответы (2)


Я настроил отказоустойчивый поиск тестов в собственном каталоге, и он отлично работает! Мне также нужно было настроить исходные каталоги тестов, как это сделали вы. Чтобы найти код для компиляции, вам необходимо настроить подключаемый модуль build helper:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <id>add-test-source</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>add-test-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>src/integration-test/java</source>
                </sources>
            </configuration>
        </execution>
        <execution>
            <id>add-test-resource</id>
            <phase>generate-test-sources</phase>
            <goals>
                <goal>add-test-source</goal>
            </goals>
            <configuration>
                <sources>
                    <source>src/integration-test/resources</source>
                </sources>
            </configuration>
        </execution>
    </executions>
</plugin>

И плагин отказоустойчивости для запуска тестов в этой папке:

<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>
            <configuration>
                <testSourceDirectory>src/integration-test/java</testSourceDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>
person froderik    schedule 16.04.2019

Я не думаю, что это подходящее место для настройки различных путей. Но если вы хотите придерживаться этого плагина build-helper-maven-plugin, вам следует запустить mvn -X и опубликовать stacktrace.

Но я бы попытался настроить разные папки в maven-failsafe-plugin напрямую. Видеть:

person asbachb    schedule 19.10.2017
comment
Трассировка стека не особо помогает. Добавлен к исходному вопросу. - person hexkid; 19.10.2017