2013-04-12 10 views
5

Mam kilka testów utworzonych za pomocą jBehave i WebDriver.Jak wykonać wiele testów jednocześnie z jBehave?

Kiedy wykonać je za pomocą Maven, wykonanie jest secuencially:

TEST 1

  • Otwórz nawigator
  • Wykonaj wszystkie etapy pierwszego opowiadania
  • Close nawigator

TEST 2

  • Otwórz nawigator
  • Wykonaj wszystkie kroki drugim piętrze
  • Close nawigatora

...

Jestem zainteresowany wykonać testy jednocześnie. Zgodnie z dokumentacją jest to możliwe.

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

Próbowałem dodanie zapisu do klasy „historie”, a także wykonywane polecenia mvn z gwintem = 5, ale nie działa.

@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 

Czy możliwe jest jednoczesne wykonywanie wielu testów?

EDIT:

Dodany część wykonanie Maven:

<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

mógłbyś również udostępnić część swojej pom, aby zobaczyć, jak uruchomić JBehave? Czy EtyyDotcomStories zawiera więcej konfiguracji niż to, co napisałeś? – AndreasEK

+0

@AndreasEK Dodano część pom, która jest wykonywana. Jeśli potrzebujesz więcej informacji, daj mi znać. Dzięki. EtsyDotcomStories nie ma więcej notacji, ale w środku jest dużo kodu. Jeśli potrzebujesz, mogę spróbować dodać pytanie. –

Odpowiedz

2

Twoje pytanie może zawierać trochę więcej szczegółów, ale zakładam, że używasz run-historie-as-embeddables cel. Zasadniczo są dwie opcje:

  1. Podczas korzystania z gola run-stories-as-embeddables ustaw „wątki” własność do celu. Rozszerzanie przykład z 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. pomocą run-historie-z adnotacją-embedder maven cel, który powinien respektować adnotacją

Również dwa scenariusze, które opisują powyżej muszą być w dwie oddzielne historie. Mutli-threading dzieje się tylko na poziomie fabuły. Scenariusze w tej samej opowieści nie są wykonywane wielowątkowo.

+0

Tak, używam celu run-stories-with-annotated-embedder. Tylko dla wyjaśnienia, co oznacza "dwie osobne historie". Mam tylko jedną historyjną klasę (EtsyDotComStories), a to wywołuje wszystkie historie. Każda historia znajduje się w innym pliku historii. Jest prawidłowe? –

+0

Tak, chodzi mi o storys jak w plikach historii. Wszystkie scenariusze w jednym opowiadaniu (pliku) zostaną wykonane w jednym wątku. – AndreasEK

0

ze sprężyną JUnit testu biegacza .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))); 
    } 
... 
Powiązane problemy