2011-10-17 17 views
6

Tôi đã có bộ kiểm tra JUnit 4 có chứa một số lớp kiểm tra theo thứ tự chúng cần chạy (các bài kiểm tra Tích hợp của chúng ta cần phải chạy trong một Thứ tự nhất định).Chạy một JUnit4 Test Suite trong Maven bằng cách sử dụng maven-failsafe-plugin

Nếu tôi sử dụng plugin maven-failsafe mà không có bất kỳ cấu hình nào, nó sẽ chạy thử nghiệm nhưng không đúng thứ tự. Tuy nhiên, nếu tôi đặt plugin để chạy bộ kiểm tra thì không có thử nghiệm nào được chạy.

Có thể chạy bộ thử nghiệm bằng plugin không an toàn không? nếu vậy, tôi đã đi sai đâu !!

Mã này là dưới đây:

@RunWith(Suite.class) 
@SuiteClasses({ 
    TestCase1.class, 
    TestCase2.class, 
     ... 
    TestCaseN.class, 
}) 
public class IntegrationSuite { 
    //Do Nothing. 
} 

và từ pom.xml:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-failsafe-plugin</artifactId> 
    <version>2.9</version> 
    <configuration> 
     <includes> 
      <include>IntegrationSuite.java</include> 
     </includes> 
    </configuration> 
    <executions> 
     <execution> 
      <id>integration-test</id> 
      <goals> 
       <goal>integration-test</goal> 
      </goals> 
    </execution> 
    <execution> 
     <id>verify</id> 
     <goals> 
      <goal>verify</goal> 
     </goals> 
    </execution> 
</executions> 
</plugin> 

Cảm ơn :)

Trả lời

10

Plugin Failsafe hỗ trợ runOrder (click) tham số kể từ phiên bản 2.7 (khá gần đây). Không có nhiều tùy chọn, bạn không thể chỉ định thứ tự một cách rõ ràng, nhưng bạn có thể đặt nó thành "chữ cái" và đổi tên các lớp thử nghiệm của bạn để phản ánh thứ tự chạy.

Tôi cũng có thể nói nhân dịp thực tế là kiểm tra phụ thuộc vào nhau là (kiểm tra) mã số; nó không tốt, vì nó là một con đường ngắn để phát triển một bộ kiểm tra không thể duy trì và từ bỏ nó cuối cùng khi bầu trời phức tạp của nó trên sự hiểu biết của con người. Thêm vào đó nó có thể không hiển thị lỗi, vì nó là kết quả của một đường dẫn thực hiện được chọn.

BTW, tôi thích để bao gồm các xét nghiệm như thế này, với một dấu hoa thị kép:

<includes> 
    <include>**/IntegrationSuite.java</include> 
</includes> 
+0

Cám ơn câu trả lời của bạn! Bản thân các bài kiểm tra không dựa vào nhau để chạy, tuy nhiên thứ tự chạy của chúng đã được xác định bằng một tài liệu viết chi tiết các bài kiểm tra ... không phải quyết định của tôi, nhưng tôi vẫn phải thực hiện nó !! –

+0

@HeavyMetalKid Bây giờ tôi nghĩ về nó, dựa trên cách Surefire/Failsafe tìm thấy các trường hợp thử nghiệm, các bộ có lẽ không được hỗ trợ. Tuy nhiên, tôi không thể đưa ra một bằng chứng cứng. – MaDa

+0

Từ những gì tôi đã đọc trong khi tìm kiếm câu trả lời cho điều này, tôi nghĩ bạn có thể đúng. Tôi sẽ thử ý tưởng đặt tên theo thứ tự chữ cái runOrder + của bạn. Cảm ơn –

0

maven-surefire-plugin có thể cũng được sử dụng như bên dưới mã:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-surefire-plugin</artifactId> 
<version>2.12.4</version> 
<configuration> 
<includes> 
<include>**/IntegrationSuite.java</include> 
</includes> 
</configuration> 
</plugin>