spring - 并行运行 Spock 测试

标签 spring integration-testing spock e2e-testing maven-failsafe-plugin

我的 E2E 测试运行非常缓慢(25 分钟),因为它们调用了一堆服务并等待一些数据填充到数据库中。我想同时运行它。我正在使用以下 maven-failsafe-plugin设置:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>${plugin.failsave.version}</version>
    <executions>
        <execution>
            <id>run-integration-tests</id>
            <phase>integration-test</phase>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>

我的测试看起来像这样(如果需要,可以提供更多信息):
@Stepwise
@DataJpaTest
@ContextConfiguration(classes = SomeControllerITConfig)
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class SomeControllerIT extends Specification {
    // some variables definition

    def "test1":
        // some test

    def "test2":
        // some test

    // some more tests
}

我尝试使用 threadCount属性(property)连同parallelforkCount但没有什么对我有用。我还试图在 maven-failsafe-plugin 中强制以下依赖项依赖:
<dependency>
      <groupId>org.apache.maven.surefire</groupId>
      <artifactId>surefire-junit47</artifactId>
      <version>2.16</version>
</dependency>

提前致谢!

最佳答案

我最终在 GitHub 上遇到了以下问题:

https://github.com/spockframework/spock/issues/691

如果您也对 Spock 中的并行测试执行感兴趣,请发表评论或其他任何内容。

简而言之,我发现了一个启用并行执行的拉取请求,它甚至被合并到了一个分支中。但是它还没有合并到 master 中。所以我现在看到的唯一出路是编写我自己的自定义 BaseSpecRunner

关于spring - 并行运行 Spock 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41897862/

相关文章:

spring - 我们怎么知道 HikariCp 何时完全初始化了它的池?

spring - 如何 Autowiring Quartz JobListener

java - AspectJ 切入点不适用于带有 Element.TYPE 的注释,例如 @Component

spring - 不能将 PowerMockRunner 与 SpringBootTest 一起使用

javascript - Cypress 断言失败但测试通过

groovy - Spock 验证模拟引发的异常以及模拟交互

javascript - 如何使用 Ajax 检查登录情况?

angularjs - 集成测试时在AngularJS中使用$injector(不使用ngMock)

grails - Grails、Geb 和 PhantomJS 的功能测试不起作用

unit-testing - 如何在 Grails 中测试 spring bean?