2013-04-12 30 views
5

Tôi có một số thử nghiệm được tạo bằng jBehave và WebDriver.Làm thế nào để thực hiện nhiều kiểm tra cùng một lúc với jBehave?

Khi tôi thực hiện chúng qua Maven, việc thực hiện là secuencially:

THI 1

  • mở navigator
  • Execute tất cả các bước của câu chuyện đầu tiên
  • Đóng navigator

KIỂM TRA 2

  • mở navigator
  • Execute tất cả các bước của câu chuyện thứ hai
  • Đóng navigator

...

Tôi quan tâm đến thực hiện các bài kiểm tra cùng một lúc. Theo tài liệu, điều này là có thể.

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

Tôi đã thử thêm các ký hiệu để lớp "Stories", và cũng có thể thực hiện lệnh mvn với chủ đề = 5, nhưng không hoạt động.

@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 

Có thể thực hiện nhiều kiểm tra cùng một lúc không?

EDIT:

Added phần thực hiện 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

thể bạn cũng hãy chia sẻ một phần của pom của bạn, để xem làm thế nào bạn khởi động JBehave? EtsyDotcomStories có chứa nhiều cấu hình hơn những gì bạn đã đăng không? – AndreasEK

+0

@AndreasEK Đã thêm một phần của pom được thực hiện. Nếu bạn cần thêm thông tin, hãy cho tôi biết. Cảm ơn. EtsyDotcomStories không có nhiều ký hiệu hơn nhưng có rất nhiều mã bên trong. Nếu bạn cần, tôi có thể thử thêm vào câu hỏi. –

Trả lời

2

Câu hỏi của bạn có thể chứa một ít chi tiết hơn, nhưng tôi cho rằng bạn đang sử dụng chạy các câu chuyện-as-embeddables mục tiêu. Về cơ bản, bạn có hai tùy chọn:

  1. Khi sử dụng mục tiêu chạy như câu chuyện, hãy đặt thuộc tính "chủ đề" thành mục tiêu. Mở rộng ví dụ từ 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. Sử dụng chạy những câu chuyện-với-chú thích-embedder mục tiêu maven, mà nên tôn trọng Chú

Ngoài ra, hai kịch bản mà bạn mô tả ở trên phải ở trong hai riêng biệt câu chuyện. Sự phân luồng chỉ diễn ra trên tầng câu chuyện. Các kịch bản bên trong cùng một câu chuyện không được thực hiện đa luồng.

+0

Có, tôi đang sử dụng mục tiêu nhúng-với-chú thích-embedder. Chỉ để làm rõ, có nghĩa là "hai câu chuyện riêng biệt". Tôi chỉ có một tầng lớp (EtsyDotComStories) và điều này gọi tất cả các câu chuyện. Mỗi câu chuyện nằm trong một tập tin câu chuyện khác nhau. Đúng? –

+0

Vâng, tôi có nghĩa là những câu chuyện như trong các tập truyện. Tất cả các kịch bản trong một câu chuyện (tệp) sẽ được thực hiện trên một chuỗi. – AndreasEK

0

Với runner thử nghiệm mùa xuân 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))); 
    } 
... 
Các vấn đề liên quan