"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je utiliser Cucumber avec une exécution parallèle pour accélérer mes tests BDD ?

Comment puis-je utiliser Cucumber avec une exécution parallèle pour accélérer mes tests BDD ?

Publié le 2024-11-01
Parcourir:208

How can I use Cucumber with parallel execution to speed up my BDD tests?

Exécution de fichiers de fonctionnalités Cucumber en parallèle

Introduction

Dans les environnements de test modernes, l'exécution de tests en parallèle peut améliorer considérablement l'efficacité et la rapidité des processus de test. Cucumber, un framework de développement basé sur le comportement (BDD) populaire, permet l'exécution parallèle de fichiers de fonctionnalités.

Approche basée sur les plugins

Pour réaliser une exécution parallèle dans Cucumber, vous pouvez utiliser le concombre- jvm-parallel-plugin. Ce plugin crée dynamiquement des classes d'exécuteur de test qui peuvent être exécutées en parallèle.

Configuration

  1. Ajoutez le plugin à pom.xml :

  com.github.temyers
  cucumber-jvm-parallel-plugin
  2.1.0
  1. Configurez le plugin dans pom.xml :

  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
      
    
  

Invoquer des classes d'runner générées

Ajoutez un plugin Maven Surefire pour invoquer les classes d'runner générées en parallèle :


  org.apache.maven.plugins
  maven-surefire-plugin
  2.19
   
    5
    true
    
      **/*IT.class
    
  

WebDriver partagé

Pour exécuter des tests en parallèle, l'instance WebDriver doit être partagée et non explicitement fermée au sein des tests. La classe SharedDriver réalise ceci :

public class SharedDriver extends EventFiringWebDriver {
    private static WebDriver REAL_DRIVER = null;

    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;
    }
}

Considérations supplémentaires

  • Exécution parallèle et grille : Pour des performances optimales, utilisez une grille avec suffisamment de nœuds (navigateurs enregistrés auprès du hub).
  • Mémoire du Hub : Augmentez la taille du pool (par exemple, -DPOOL_MAX=512) pour les installations du Hub avec un nombre élevé de nœuds (50).
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3