2013-04-12 16 views
5

我有一些用jBehave和WebDriver创建的测试。如何用jBehave同时执行多个测试?

当我通过Maven的执行它们,执行是secuencially:

TEST 1

  • 打开导航
  • 执行第一个故事的所有步骤
  • 关闭导航

TEST 2

  • 打开导航
  • 执行第二个故事
  • 关闭导航

的所有步骤......

我很感兴趣,同时执行测试。根据文件,这是可能的。

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

我试着添加符号的“故事”类,并且也执行与线程= 5 mvn命令,但不起作用。

@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 

是否可以同时执行多个测试?

编辑:

添加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

能否请你也分享你的pom的一部分,就看你如何启动JBehave? EtsyDotcomStories是否包含比您发布的配置更多的配置? – AndreasEK

+0

@AndreasEK添加了执行的pom部分。如果您需要更多信息,请告诉我。谢谢。 EtsyDotcomStories没有更多的符号,但里面有很多代码。如果你需要,我可以尝试添加问题。 –

回答

2

你的问题可能包含更多的细节,但我认为你正在使用运行的故事 - 为 - embeddables目标。基本上有两种选择:

  1. 当使用run-stories-as-embeddables目标时,将属性“threads”设置为目标。从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. 使用运行的故事 - 与标注嵌Maven的目标,应该尊重注释

同样,你描述的两个场景以上必须在两个单独的故事。多线程只发生在故事级别。同一故事中的场景不会被多线程执行。

+0

是的,我正在使用run-stories-with-annotated-embedder的目标。只是为了澄清,什么是“两个分开的故事”。我只有一个故事类(EtsyDotComStories),这就调用了所有的故事。每个故事都在不同的故事文件中。这是正确的? –

+0

是的,我的意思是故事档案中的storys。一个故事(文件)中的所有场景将在一个线程上执行。 – 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))); 
    } 
... 
相关问题