Интеграционный тест запускают дважды.Однажды из-за плагина FailSafe для Jacoco, а другая из-за плагина Jbehave maven - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть этот pom-файл для Java-проекта restful веб-службы, в котором мы использовали плагин Jbehave maven для запуска интеграционных тестов и генерации отчетов о выполнении тестов.В рамках нового процесса мне пришлось внедрить Jacoco в проекте в одном файле pom [с использованием плагинов Surefire и Failsafe] для генерации отчетов о покрытии кода.Теперь проблема заключается в том, что интеграционные тесты выполняются дважды, вызывая проблемы в тестовой базе данных [один раз для Jbehave, а другой раз для плагина Jacoco FailSafe].Есть ли способ изменить файл pom, чтобы гарантировать, что Jacoco FailSafe, а также Jbehave работают как одна цель, генерируя соответствующие отчеты [т.е. интеграционные тесты выполняются только один раз]

Попытка закомментировать либо отказоустойчивую цель Jacocoили Jbehave, в этом случае интеграционные тесты запускаются только один раз, но не могут найти способ изменить файл pom, чтобы убедиться, что обе цели выполняются, но интеграционный тестовый случай запускается только один раз

Настройка файла Pom, если это возможно,Убедитесь, что оба плагина Jbehave maven, а также отказоустойчивые цели плагина Jacoco выполнены, но интеграционный тест запускается только один раз

<plugin>
<groupId>org.jbehave</groupId>
<artifactId>jbehave-maven-plugin</artifactId>
<version>$(jbehave.core.version)</version>
<executions>
  <execution>
    <id>unpack-view-resources</id>
    <phase>pre-integration-test</phase>
    <goals>
      <goal>unpack-view-resources</goal>
    </goals>
    <configuration>
     <scope>test</scope>
    </configuration>
 </execution>

 <execution>
  <id>embeddable-stories</id>
  <phase>integration-test</phase>
  <goals>
      <goal>run-stories-as-embeddables</goal>
  </goals>
  <configuration> 
    <includes>
      <include>**/Stories.java</include>  
    </includes>


    <plugin>
        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.7.5.201505241946</version>
        <executions>
            <!-- The Executions required by unit tests are omitted. -->
            <!--
                Prepares the property pointing to the JaCoCo runtime agent which
                is passed as VM argument when Maven the Failsafe plugin is executed.
            -->
            <execution>
                <id>pre-integration-test</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>prepare-agent</goal>
                </goals>
                <configuration>
                    <!-- Sets the path to the file which contains the execution data. -->
                    <destFile>${project.build.directory}/coverage-reports/jacoco-it.exec</destFile>
                    <!--
                        Sets the name of the property containing the settings
                        for JaCoCo runtime agent.
                    -->
                    <propertyName>failsafeArgLine</propertyName>
                </configuration>
            </execution>
            <!--
                Ensures that the code coverage report for integration tests after
                integration tests have been run.
            -->
            <execution>
                <id>post-integration-test</id>
                <phase>post-integration-test</phase>
                <goals>
                    <goal>report</goal>
                </goals>
                <configuration>
                    <!-- Sets the path to the file which contains the execution data. -->
                    <dataFile>${project.build.directory}/coverage-reports/jacoco-it.exec</dataFile>
                    <!-- Sets the output directory for the code coverage report. -->
                    <outputDirectory>${project.reporting.outputDirectory}/jacoco-it</outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>


    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.15</version>
        <executions>
            <!--
                Ensures that both integration-test and verify goals of the Failsafe Maven
                plugin are executed.
            -->
            <execution>
                <id>integration-tests</id>
                <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
                </goals>
                <configuration>
                    <!-- Sets the VM argument line used when integration tests are run. -->
                    <argLine>${failsafeArgLine}</argLine>
                    <includes>
                       <include>**/Stories.java</include>  
                    </includes>             
                    <!--
                        Skips integration tests if the value of skip.integration.tests property
                        is true
                    -->
                    <skipTests>${skip.integration.tests}</skipTests>
                </configuration>
            </execution>
        </executions>
    </plugin>
...