Выполнить модуль Maven на этапе интеграционных испытаний - PullRequest
2 голосов
/ 08 марта 2011

Я хочу запустить модуль sibling maven 3, который выступает в качестве сервера приложений в одном из моих модулей maven, чтобы запускать интеграционные тесты с системой.

Мой проект Maven выглядит примерно так:

  • Родительский модуль
    • Модуль A
    • Модуль B

Теперь я хочу запустить «Модуль A» на этапе предварительных интеграционных испытаний в maven, а затем запустить все интеграционные тесты, содержащиеся в Модуле B. Мне удалось запустить интеграционные тесты в Модуле B, но я не нашел «пятно» "способ запуска модуля B на этапе предварительного тестирования.

Какая лучшая практика для этого? Использовать плагин mojo-exec? Как это настроить? Использование "грязного" сценария оболочки и выполнение mvn run для модуля A?

Редактировать

Я не хочу запускать сервер приложений на этапе предварительного тестирования, но хочу запустить модуль maven (который сам по себе запускается mojo-exec-plugin). Запуск означает запуск главного класса упакованного (работающего) модуля!

Ответы [ 2 ]

5 голосов
/ 10 июля 2012

Попробуйте использовать Java-цель maven-exec-plugin, привязанную к фазе установки:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2.1</version>
    <executions>
      <execution>
        <id>start-app</id>
        <phase>install</phase>
        <goals>
          <goal>java</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <mainClass>com.example.Main</mainClass>
      <arguments>
        <argument>argument1</argument>
        ...
      </arguments>
      <systemProperties>
        <systemProperty>
          <key>myproperty</key>
          <value>myvalue</value>
        </systemProperty>
        ...
      </systemProperties>
    </configuration>
  </plugin>
0 голосов
/ 08 марта 2011

Сначала вы должны поместить свои интеграционные тесты в один модуль. Предположим, что вы используете модуль A, а затем вы должны запустить фазу интеграционных тестов также на том же модуле, а не в другом модуле.

Вы можетеиспользуйте cargo-plugin для запуска сервера приложений на этапе предварительного тестирования, запустите ваши интеграционные тесты с помощью maven-failsafe-plugin и завершите работу сервера приложений во время пост-интеграционного тестирования через грузовой плагин.Ниже приведен фрагмент для настройки грузового плагина для запуска / остановки сервера Tomcat, но Cargo поддерживает также JBoss, Glassfish и т. Д.

   <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven2-plugin</artifactId>
      <version>1.0.5</version>
      <configuration>
        <wait>false</wait>
        <container>
          <containerId>tomcat${tomcat.major}x</containerId>
          <zipUrlInstaller>
            <url>http://www.apache.org/dist/tomcat/tomcat-${tomcat.major}/v${tomcat.version}/bin/apache-tomcat-${tomcat.version}.tar.gz</url>
            <installDir>${installDir}</installDir>
          </zipUrlInstaller>
          <output>${project.build.directory}/tomcat${tomcat.major}x.log</output>
          <log>${project.build.directory}/cargo.log</log>
        </container>
        <configuration>
          <home>${project.build.directory}/tomcat-${tomcat.version}/container</home>
          <properties>
            <cargo.logging>high</cargo.logging>
            <cargo.servlet.port>9080</cargo.servlet.port>
            <cargo.jvmargs>-DHUDSON_HOME=${project.build.directory}/hudson-storage</cargo.jvmargs>
          </properties>
        </configuration>
      </configuration>
      <executions>
        <execution>
          <id>start-container</id>
          <phase>pre-integration-test</phase>
          <goals>
            <goal>start</goal>
            <goal>deploy</goal>
          </goals>
          <configuration>
            <deployer>
              <deployables>
                <deployable>
                  <groupId>org.jvnet.hudson.main</groupId>
                  <artifactId>hudson-war</artifactId>
                  <type>war</type>
                  <pingURL>http://localhost:9080/hudson</pingURL>
                  <pingTimeout>60000</pingTimeout>
                  <properties>
                    <context>hudson</context>
                  </properties>
                </deployable>
              </deployables>
            </deployer>
          </configuration>
        </execution>
        <execution>
          <id>stop-container</id>
          <phase>post-integration-test</phase>
          <goals>
            <goal>stop</goal>
          </goals>
        </execution>
      </executions>
    </plugin>

Следующий фрагмент дает вам представление окак использовать плагин maven-surefire и плагин компилятора: в этом случае важно назвать интеграционные тесты (например, XYZ * IT.jav)

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.3.2</version>
      <executions>
        <execution>
          <goals>
            <goal>testCompile</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-failsafe-plugin</artifactId>
      <version>2.6</version>
      <executions>
        <execution>
          <id>integration-test</id>
          <goals>
            <goal>integration-test</goal>
          </goals>
        </execution>
        <execution>
          <id>verify</id>
          <goals>
            <goal>verify</goal>
          </goals>
        </execution>
      </executions>
    </plugin>

Вам не нужен execплагин и т. д. или сценарий оболочки для запуска интеграционных тестов в maven.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...