„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich Cucumber mit paralleler Ausführung verwenden, um meine BDD-Tests zu beschleunigen?

Wie kann ich Cucumber mit paralleler Ausführung verwenden, um meine BDD-Tests zu beschleunigen?

Veröffentlicht am 01.11.2024
Durchsuche:968

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

Cucumber-Feature-Dateien parallel ausführen

Einführung

In modernen Testumgebungen kann die parallele Testausführung die Effizienz und Geschwindigkeit von Testprozessen erheblich verbessern. Cucumber, ein beliebtes Framework für verhaltensgesteuerte Entwicklung (BDD), ermöglicht die parallele Ausführung von Feature-Dateien.

Plugin-basierter Ansatz

Um eine parallele Ausführung in Cucumber zu erreichen, können Sie die Gurke verwenden. jvm-parallel-plugin. Dieses Plugin erstellt dynamisch Testläuferklassen, die parallel ausgeführt werden können.

Konfiguration

  1. Fügen Sie das Plugin zu pom.xml hinzu:

  com.github.temyers
  cucumber-jvm-parallel-plugin
  2.1.0
  1. Konfigurieren Sie das Plugin in 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
      
    
  

Generierte Runner-Klassen aufrufen

Fügen Sie ein Maven Surefire-Plugin hinzu, um die generierten Runner-Klassen parallel aufzurufen:


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

Freigegebener WebDriver

Um Tests parallel auszuführen, muss die WebDriver-Instanz gemeinsam genutzt und darf nicht explizit innerhalb der Tests geschlossen werden. Die SharedDriver-Klasse erreicht dies:

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

Zusätzliche Überlegungen

  • Parallele Ausführung und Raster: Für eine optimale Leistung verwenden Sie ein Raster mit ausreichend Knoten (beim Hub registrierte Browser).
  • Hub-Speicher: Erhöhen Sie die Poolgröße (z. B. -DPOOL_MAX=512) für Hub-Installationen mit einer hohen Anzahl von Knoten (50).
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3