Basta ya de investigar por todo internet porque estás al espacio perfecto, tenemos la solución que quieres pero sin liarte.
Solución:
Actualizar: La versión 4.0.0 está disponible en el repositorio central de maven con un montón de cambios. Para más detalles, vaya aquí.
Actualizar: La versión 2.2.0 está disponible en el repositorio central de maven.
Puede utilizar el complemento de código abierto cucumber-jvm-parallel-plugin, que tiene muchas ventajas sobre las soluciones existentes. Disponible en el repositorio de maven
com.github.temyers
cucumber-jvm-parallel-plugin
2.1.0
-
Primero debe agregar este complemento con la configuración requerida en el archivo pom de su proyecto.
com.github.temyers cucumber-jvm-parallel-plugin 2.1.0 generateRunners generate-test-sources generateRunners foo, bar $project.build.directory/generated-test-sources/cucumber src/test/resources/features/ target/cucumber-parallel json true true false false simple ParallelcIT SCENARIO src/test/resources/cucumber-custom-runner.vm -
Ahora agregue el complemento de abajo justo debajo del complemento de arriba que invocará las clases de corredor generadas por el complemento de arriba
org.apache.maven.plugins maven-surefire-plugin 2.19 5 true **/*IT.class -
Los dos complementos anteriores harán magia para la prueba de pepino que se ejecuta en paralelo (siempre que su máquina también tenga soporte de hardware avanzado).
-
Estrictamente proporcionado
aquí ‘n’ es directamente proporcional a 1) Soporte de hardware avanzado y 2) sus nodos disponibles, es decir, instancias de navegador registradas en HUB.n -
Uno de los cambios importantes y más importantes es que su clase WebDriver debe ser COMPARTIDO y deberías no implemente el método driver.quit (), ya que el cierre se realiza mediante el gancho de cierre.
import cucumber.api.Scenario; import cucumber.api.java.After; import cucumber.api.java.Before; import org.openqa.selenium.OutputType; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriverException; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.events.EventFiringWebDriver; public class SharedDriver extends EventFiringWebDriver private static WebDriver REAL_DRIVER = null; private static final Thread CLOSE_THREAD = new Thread() @Override public void run() REAL_DRIVER.close(); ; static Runtime.getRuntime().addShutdownHook(CLOSE_THREAD); public SharedDriver() super(CreateDriver()); public static WebDriver CreateDriver() WebDriver webDriver; if (REAL_DRIVER == null) webDriver = new FirefoxDriver(); setWebDriver(webDriver); return webDriver; public static void setWebDriver(WebDriver webDriver) this.REAL_DRIVER = webDriver; public static WebDriver getWebDriver() return this.REAL_DRIVER; @Override public void close() if (Thread.currentThread() != CLOSE_THREAD) throw new UnsupportedOperationException("You shouldn't close this WebDriver. It's shared and will close when the JVM exits."); super.close(); @Before public void deleteAllCookies() manage().deleteAllCookies(); @After public void embedScreenshot(Scenario scenario) try byte[] screenshot = getScreenshotAs(OutputType.BYTES); scenario.embed(screenshot, "image/png"); catch (WebDriverException somePlatformsDontSupportScreenshots) System.err.println(somePlatformsDontSupportScreenshots.getMessage());
-
Teniendo en cuenta que desea ejecutar más de 50 subprocesos, es decir, el mismo número de instancias del navegador están registradas en HUB, pero Hub morirá si no tiene suficiente memoria, por lo tanto, para evitar esta situación crítica, debe iniciar el hub con -DPOOL_MAX = 512 (o más grande) como se indica en la documentación de grid2.
Really large (>50 node) Hub installations may need to increase the jetty threads by setting -DPOOL_MAX=512 (or larger) on the java command line.
java -jar selenium-server-standalone-
.jar -role hub -DPOOL_MAX=512
El pepino no admite la ejecución paralela de fábrica. Lo he intentado, pero no es amistoso.
- Tenemos que usar la capacidad de maven para invocarlo en paralelo. Enlace de referencia
- También hay un proyecto de github que utiliza un complemento personalizado para ejecutarse en paralelo. Consulte cucumber-jvm-paralelo-plugin
Si todo lo que espera es poder ejecutar varias funciones en paralelo, puede intentar hacer lo siguiente:
- Duplique la clase AbstractTestNGCucumberTests en su proyecto de prueba y configure el attribute
parallel=true
al@DataProvider
método anotado.
Desde el defecto dataprovider-thread-count
de TestNG es 10
y ahora que ha indicado a TestNG que ejecute features
en paralelo, debería empezar a ver que sus archivos de características se ejecutan en paralelo.
Pero entiendo que los informes de Cucumber no son intrínsecamente seguros para subprocesos, por lo que sus informes pueden parecer confusos.
Tienes la posibilidad mostrar este post si te fue de ayuda.