¿Cómo ejecuto mis funciones de pepino-jvm en paralelo? (con maven usando cucumber-jvm-parallel-plugin)

Estoy tratando de incorporar un complemento Mavenpepino-jvm-paralelo-plugin en miPepino-JVM código y me encuentro con algunos problemas ... Creo que he configurado mipom.xml correctamente, pero mi pepinolas funciones todavía se ejecutan una por una en lugar de en paralelo.

¿Cómo configuro mi pom.xml para que mis funciones de pepino se ejecuten en paralelo? Tengo algunos archivos de características que bloquean la ejecución y no quiero tener que esperar a que terminen para comenzar a probar las otras características.

Seguí dos tutoriales, y no puedo encontrar dónde me estoy equivocando, o si esto se espera:

https://opencredo.com/test-automation-concepts-parallel-test-execution/http://automationrhapsody.com/running-cucumber-tests-in-parallel/Estructura

Aquí está la estructura de mi programa:

├── features/
│   └── api/
│       ├── 006-Email.feature
│       └── 999-Login.feature
├── results/
│   └── api-json.json
└── src/
    └── java/
        ├── pom.xml
        ├── src/
        │   └── test/
        │       └──, java/
        │           └── com/
        │               └── mycompany/
        │                   └── commonapps/
        │                       └── queuemanager/
        │                           ├── Globals.java
        │                           ├── GmailHelper.java
        │                           ├── HttpDeleteWithBody.java
        │                           ├── JsonHelper.java
        │                           ├── RequestHelper.java
        │                           ├── RunApiTest.java
        │                           ├── ThreadedSteps.java
        │                           └── UserHelper.java
        └── steps/
            └── com/
                └── mycompany/
                    └── commonapps/
                        └── queuemanager/
                            ├── GivenSteps.java
                            ├── Setup.java
                            ├── ThenSteps.java
                            └── WhenSteps.java
Maven Pom Logic

La forma en que configuré mi pom es la siguiente:

Yo copio../../features/api/ a mi ruta de compilación usandoComplemento de recursos de Maven

<build>
  <resources>
     <resource>
        <directory>../../features/api/</directory> 
     </resource>
  </resources>
</build>

digopepino-jvm-paralelo-plugin que mifeatures ahora se encuentran entarget/classes/active/, porque pienso../../features/api/ fue copiado atarget/, entoncestarget/active/ debería contener mi.feature archivos ... creo.

 <plugin>
      <groupId>com.github.temyers</groupId>
      <artifactId>cucumber-jvm-parallel-plugin</artifactId>
      ...
      <configuration>
          ...
          <featuresDirectory>${project.build.directory}/classes/active/</featuresDirectory>
          ...
      </configuration>
 </plugin>

Entonces, después de corrermaven test, todas.feature los archivos se compilan entarget/test-classes/Parallel**IT.class. Uno por archivo de características.

Así que les digoplugin maven-surefire correr todo<include>**/Parallel*IT.class</include> archivos en paralelo, que son los archivos de características creados por cucumber-jvm-parallel-plugin.

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
       <execution>
          <id>acceptance-test</id>
          <phase>integration-test</phase>
          <goals>
             <goal>test</goal>
          </goals>
          <configuration>
            <forkCount>5</forkCount>
            <reuseForks>true</reuseForks>
            <includes>
              <include>**/Parallel*IT.class</include>
            </includes>
          </configuration>
       </execution>
    </executions>
 </plugin>
Pom.xml completo

Y mi pom.xml es:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.mycompany.commonapps</groupId>
   <artifactId>e2e-server</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <dependencies>
     ...
   </dependencies>
   <build>
<!-- COPY RESOURCES TO TARGET/ -->
      <resources>
    <!-- copies features to target: "${project.build.directory}/classes/active/" -->
         <resource>
            <directory>../../features/api/</directory> 
         </resource>
      </resources>
<!-- RUN EACH CUCUMBER FEATURE FILE AS A FORK -->
      <plugins>
    <plugin>
      <groupId>com.github.temyers</groupId>
      <artifactId>cucumber-jvm-parallel-plugin</artifactId>
      <version>1.2.1</version>
      <executions>
        <execution>
          <id>generateRunners</id>
          <phase>generate-test-sources</phase>
          <goals>
        <goal>generateRunners</goal>
          </goals>
          <configuration>
          <glue>com.mycompany.commonapps.queuemanager</glue>
           <outputDirectory>${project.build.directory}/generated-test-sources</outputDirectory>
           <featuresDirectory>${project.build.directory}/classes/active/</featuresDirectory>
           <cucumberOutputDir>${project.build.directory}</cucumberOutputDir>
           <format>json</format>
           <!--<strict>true</strict>
           <monochrome>true</monochrome> 
           <useTestNG>false</useTestNG>
           <namingScheme>simple</namingScheme>-->
           <parallelScheme>FEATURE</parallelScheme>
          </configuration>
        </execution>
      </executions>
    </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
<!-- RUN ALL CLASSES CREATED BY cucumber-jvm-parallel-plugin IN PARALLEL -->
        <executions>
         <execution>
             <id>acceptance-test</id>
             <phase>integration-test</phase>
             <goals>
                 <goal>test</goal>
             </goals>
             <configuration>
                 <forkCount>5</forkCount>
                 <reuseForks>true</reuseForks>
                 <includes>
                    <include>**/Parallel*IT.class</include>
                 </includes>
             </configuration>
        </execution>
        </executions>
         </plugin>
<!-- ADD ../../STEPS/ TO THE SOURCE -->
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.7</version>
            <executions>
               <execution>
                  <id>add-source</id>
                  <phase>generate-sources</phase>
                  <goals>
                     <goal>add-source</goal>
                  </goals>
                  <configuration>
                     <sources>
                        <source>steps/</source>
                        <source>src/test/java/</source>
                     </sources>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>
</project>
Corredor de pepino

Y mi clase de pepino corriendo se ve así:

@RunWith(Cucumber.class)
@CucumberOptions(plugin={"pretty","json:../../results/api-json.json"}, glue={"com.mycompany.commonapps.queuemanager"}, features={"../../features/api/active"})
public class RunApiTest {
}
Salida

Cuando corromvn test, Me sale lo siguiente:

...
[INFO] ------------------------------------------------------------------------
[INFO] Building e2e  Server Tests 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[WARNING] The artifact org.apache.commons:commons-io:jar:1.3.2 has been relocated to commons-io:commons-io:jar:1.3.2
[INFO] 
[INFO] --- build-helper-maven-plugin:1.7:add-source (add-source) @ e2e--server ---
[INFO] Source directory: /media/ifc-dev-1/ESD-ISO/e2e-/src/java/steps added.
[INFO] Source directory: /media/ifc-dev-1/ESD-ISO/e2e-/src/java/src/test/java added.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ e2e--server ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 7 resources
[INFO] Copying 2 resources
[INFO] Copying 7 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.2:compile (default-compile) @ e2e--server ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 12 source files to /media/ifc-dev-1/ESD-ISO/e2e-/src/java/target/classes
[INFO] /media/ifc-dev-1/ESD-ISO/e2e-/src/java/src/test/java/com/mycompany/commonapps/queuemanager/GmailHelper.java: /media/ifc-dev-1/ESD-ISO/e2e-/src/java/src/test/java/com/mycompany/commonapps/queuemanager/GmailHelper.java uses unchecked or unsafe operations.
[INFO] /media/ifc-dev-1/ESD-ISO/e2e-/src/java/src/test/java/com/mycompany/commonapps/queuemanager/GmailHelper.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- cucumber-jvm-parallel-plugin:1.2.1:generateRunners (generateRunners) @ e2e--server ---
[INFO] Adding /media/ifc-dev-1/ESD-ISO/e2e-/src/java/target/generated-test-sources to test-compile source root
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ e2e--server ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /media/ifc-dev-1/ESD-ISO/e2e-/src/java/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.2:testCompile (default-testCompile) @ e2e--server ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 10 source files to /media/ifc-dev-1/ESD-ISO/e2e-/src/java/target/test-classes
[INFO] /media/ifc-dev-1/ESD-ISO/e2e-/src/java/src/test/java/com/mycompany/commonapps/queuemanager/GmailHelper.java: /media/ifc-dev-1/ESD-ISO/e2e-/src/java/src/test/java/com/mycompany/commonapps/queuemanager/GmailHelper.java uses unchecked or unsafe operations.
[INFO] /media/ifc-dev-1/ESD-ISO/e2e-/src/java/src/test/java/com/mycompany/commonapps/queuemanager/GmailHelper.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.17:test (default-test) @ e2e--server ---
[INFO] Surefire report directory: /media/ifc-dev-1/ESD-ISO/e2e-/src/java/target/surefire-reports

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.mycompany.commonapps.queuemanager.RunApiTest
....
*Tests run one by one properly*
...
Tests run: 31, Failures: 2, Errors: 0, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:40 min
[INFO] Finished at: 2016-11-10T15:49:11-08:00
[INFO] Final Memory: 20M/261M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.17:test (default-test) on project e2e--server: There are test failures.
[ERROR] 
[ERROR] Please refer to /media/ifc-dev-1/ESD-ISO/e2e-/src/java/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

¿Alguien ve lo que hice mal?

Más información de depuracióncucumber-jvm-parallel-plugin'soutputDirectory es ser creadocorrectamente y contiene un montón de archivos paralelos ** IT.classcucumber-jvm-parallel-plugin'sfeaturesDirectory es obtener accesocorrectamente.cucumber-jvm-parallel-plugin'scucumberOutputDir no es ser creado en absoluto después de una construcción

Respuestas a la pregunta(1)

Su respuesta a la pregunta