并行运行Spock测试

时间:2017-01-27 15:48:51

标签: 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属性以及parallelforkCount,但对我来说没有任何作用。我还尝试在maven-failsafe-plugin依赖项中强制执行以下依赖项:

<dependency>
      <groupId>org.apache.maven.surefire</groupId>
      <artifactId>surefire-junit47</artifactId>
      <version>2.16</version>
</dependency>

提前致谢!

2 个答案:

答案 0 :(得分:5)

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

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

如果您对Spock中的并行测试执行感兴趣,请注释或等等。

简而言之,我发现了一个启用并行执行的pull请求,它甚至被合并到一个分支中。但是它尚未合并为主人。因此,我现在唯一的出路就是编写自己的自定义BaseSpecRunner

答案 1 :(得分:1)

看起来像Spock团队添加了对并行执行的支持:

http://spockframework.org/spock/docs/2.0-M4/parallel_execution.html#parallel-execution

需要常规:> 3.0.6