如果Gatling在maven构建过程中断言失败,那么它将无法进入`post-integration-test`阶段,这会让spring-boot运行

时间:2017-08-30 22:21:20

标签: maven spring-boot performance-testing gatling

我正在使用failafe插件进行集成测试,这在测试失败期间运行良好。执行post-integration-test阶段,调用spring-boot:stop。使用相同的模式,我想用Gatling进行性能测试。似乎gatling-maven-plugin没有相同的功能,integration-test阶段失败并不能保证post-integration-test被调用。因此,spring-boot应用程序仍在运行,后续运行将无法启动。

我已经在互联网上搜索了几个小时寻找解决方案,但他们都只采取了一半的方式。它们展示了如何执行加特林测试,但没有说明如何在失败期间恢复。

使用gatling插件可以实现此功能吗?如果没有,我怎样才能在maven构建失败后直接调用post-integration-test阶段?

1 个答案:

答案 0 :(得分:0)

一个充分的解决方法是将spring-boot-maven-plugin配置为不分叉。我的应用程序在构建失败期间(由于gatling断言失败)和构建成功期间按预期停止。

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring.boot.version}</version>
            <executions>
              <execution>
                <goals>
                  <goal>repackage</goal>
                </goals>
              </execution>
              <execution>
                <phase>pre-integration-test</phase>
                <goals>
                  <goal>start</goal>
                </goals>
              </execution>
              <execution>
                <phase>post-integration-test</phase>
                <goals>
                  <goal>stop</goal>
                </goals>
              </execution>
            </executions>
        </plugin>
    </plugins>
</build>

<profile>
    <id>performance</id>
    <properties>
      <skip.integration.tests>true</skip.integration.tests>
      <skipTests>true</skipTests>
    </properties>
    <build>
      <plugins>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <configuration>
            <fork>false</fork>
          </configuration>
        </plugin>
        <plugin>
          <groupId>io.gatling</groupId>
          <artifactId>gatling-maven-plugin</artifactId>
          <version>${gatling-plugin.version}</version>
          <executions>
            <execution>
              <goals>
                <goal>execute</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
</profile>