2013-04-12 2 views
5

У меня есть несколько тестов, созданных с помощью jBehave и WebDriver.Как выполнить несколько тестов одновременно с jBehave?

Когда я исполняю их с помощью Maven, то исполнение secuencially:

ТЕСТ 1

  • Открыть навигатор
  • Выполнить все этапы первой истории
  • Закрыть навигатор

ИСПЫТАНИЕ 2

  • Открыть навигатор
  • Выполнить все этапы второго этажа
  • Закрыть штурман

...

Я заинтересован в выполнении тестов одновременно. Согласно документации, это возможно.

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

Я попытался добавить запись к классу «Истории», а также выполнил МВН команду с нитями = 5, но не работает.

@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 

Можно ли одновременно выполнять несколько тестов?

EDIT:

Добавлена ​​исполнение 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

могли бы вы также поделиться частью вашего ПОМ, чтобы посмотреть, как вы запустите JBehave? Есть ли в EtsyDotcomStories больше конфигурации, чем то, что вы разместили? – AndreasEK

+0

@AndreasEK Добавлена ​​часть исполняемого пом. Если вам нужна дополнительная информация, дайте мне знать. Благодарю. EtsyDotcomStories не имеет больше обозначений, но внутри кода много кода. Если вам нужно, я могу попытаться добавить в вопрос. –

ответ

2

Ваш вопрос может содержать немного больше деталей, но я предполагаю, что вы используете Заурядные истории-как-embeddables цель. Вы в основном есть два варианта:

  1. При использовании вводного истории, как-embeddables цели, установить свойство «нитей» к цели. Продолжая пример из 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. Используйте Заурядный истории-с-аннотированный-Embedder Maven цели, которые должны соблюдать аннотацию

Кроме того, два сценария, которые вы описываете выше должно быть в два отдельных историй. Mutli-threading происходит только на сюжетном уровне. Сценарии внутри одной истории не выполняются многопоточными.

+0

Да, я использую цель run-stories-with-annotated-embedder. Только для разъяснения, что означает «две отдельные истории». У меня есть только один класс рассказов (EtsyDotComStories), и это вызывает все истории. Каждая история находится в другом файле истории. Это верно? –

+0

Да, я имел в виду истории, как в файлах сюжета. Все сценарии в одной истории (файл) будут выполняться в одном потоке. – AndreasEK

0

С Spring тестов JUnit .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))); 
    } 
... 
Смежные вопросы