2013-04-12 18 views
5

Ich habe einige Tests mit jBehave und WebDriver erstellt.Wie kann man mehrere Tests gleichzeitig mit jBehave ausführen?

Wenn ich sie über Maven ausführen, ist die Ausführung secuencially:

TEST 1

  • öffnen Navigator
  • alle Schritte von der ersten Geschichte Execute
  • Schließen Navigator

TEST 2

  • öffnen Navigator
  • alle Schritte von der zweiten Geschichte Execute
  • Schließen Navigator

...

ich in die Tests gleichzeitig ausführen interessiert bin. Laut Dokumentation ist dies möglich.

http://jbehave.org/reference/stable/multi-threading.html

Ich habe versucht, die Schreibweise der „Stories“ Klasse hinzufügen, und auch ausgeführt, die MVN-Befehl mit den threads = 5, aber nicht funktioniert.

@UsingEmbedder(threads=5) 
    public class EtsyDotComStories extends JUnitStories { 

    ... 
    @Override 
    protected List<String> storyPaths() { 
    return new StoryFinder().findPaths(codeLocationFromClass(this.getClass()).getFile(), asList("**/*.story"), null); 

    } 

     } 


mvn clean install -s settings.xml -Pjava-spring,codehaus,threads=5 

Ist es möglich, mehrere Tests gleichzeitig auszuführen?

EDIT:

Added der Maven Ausführungsteil:

<plugins> 
     <plugin> 
     <groupId>org.jbehave</groupId> 
     <artifactId>jbehave-maven-plugin</artifactId> 
     <version>${jbehave.core.version}</version> 
     <executions> 
      <execution> 
      <id>embeddable-stories</id> 
      <phase>integration-test</phase> 
      <configuration> 
       <includes> 
       <include>**/*Stories.java</include> 
       </includes> 
       <ignoreFailureInStories>true</ignoreFailureInStories> 
       <ignoreFailureInView>false</ignoreFailureInView> 
       <threads>5</threads> 
       <executorsClass>org.jbehave.core.embedder.executors.SameThreadExecutors</executorsClass> 
      </configuration> 
      <goals> 
       <goal>run-stories-as-embeddables</goal> 
      </goals> 
      </execution> 
     </executions> 
     <dependencies> 
      <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>11.0.1</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
    </plugins> 
+0

Könnten Sie auch ein Teil Ihrer pom Teilen Sie, um zu sehen, wie Sie JBehave starten? Enthalten die EtsyDotcomStories mehr Konfiguration als du gepostet hast? – AndreasEK

+0

@AndreasEK Der Teil von Pom hinzugefügt, der ausgeführt wird. Wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen. Vielen Dank. EtsyDotcomStories hat nicht mehr Notationen, aber es ist viel Code drin. Wenn Sie brauchen, kann ich versuchen, die Frage hinzuzufügen. –

Antwort

2

Ihre Frage ein wenig mehr Details enthalten könnte, aber ich nehme an, dass Sie Lauf Geschichten-as-Embeddables Ziel verwenden. Sie haben grundsätzlich zwei Möglichkeiten:

  1. Wenn den Lauf Geschichten-as-Embeddables Ziel verwendet wird, die Eigenschaft „Fäden“ zum Ziel gesetzt. Die Erweiterung des Beispiel aus dem Maven Gaols documentation:

    <plugin> 
        <groupId>org.jbehave</groupId> 
        <artifactId>jbehave-maven-plugin</artifactId> 
        <version>[version]</version> 
        <executions> 
         <execution> 
          <id>run-stories-as-embeddables</id> 
          <phase>integration-test</phase> 
          <configuration> 
           <includes> 
            <include>**/*Stories.java</include> 
           </includes> 
           <ignoreFailureInStories>true</ignoreFailureInStories> 
           <ignoreFailureInView>false</ignoreFailureInView> 
           <treads>5</threads> 
          </configuration> 
          <goals> 
           <goal>run-stories-as-embeddables</goal> 
          </goals> 
         </execution> 
        </executions> 
    </plugin> 
    
  2. die Lauf Geschichten-mit-kommentierten-Einbettungs verwenden Maven Ziel, das die Annotation

auch respektieren sollte, die beiden Szenarien, die Sie beschreiben, oben müssen in zwei getrennte Geschichten sein. Multi-Threading passiert nur auf Story-Ebene. Szenarien innerhalb derselben Story werden nicht multi-threaded ausgeführt.

+0

Ja, ich verwende run-stories-with-annotated-embedder goal. Nur zur Klarstellung, was "zwei getrennte Geschichten" bedeutet. Ich habe nur eine Geschichten-Klasse (EtsyDotComStories) und das ruft alle Geschichten auf. Jede Geschichte befindet sich in einer anderen Geschichte. Es ist richtig? –

+0

Ja, ich meinte Geschichten wie in Story-Dateien. Alle Szenarien in einer Geschichte (Datei) werden auf einem Thread ausgeführt. – AndreasEK

0

mit Frühlings-JUnit-Testläufer .useThreads(20)

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { 
    ... 
}) 
public class Stories extends JUnitStories { 

    @Before 
    public void setUp() throws Exception { 
     configuredEmbedder() 
       .embedderControls() 
       ... 
       .useThreads(20) 
       .useStoryTimeouts(Integer.toString(maxIfDebugOr(1800))); 
    } 
... 
Verwandte Themen