2012-07-09 10 views
10

Tôi có nhiều bộ thử nghiệm trong TestNG. Đây là những tập tin XML. Tôi muốn có thể chọn nhiều bộ XML khi chạy thử nghiệm tích hợp từ maven.Làm thế nào để thông báo cho Maven plugin chắc chắn để tôi có thể chọn bộ TestNG nào để chạy

Hiện nay tôi có thể thêm các tập tin bộ để pom.xml như thế này:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <suiteXmlFiles> 
     <suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile> 
     <suiteXmlFile>${pathToMySuiteFile_1}</suiteXmlFile> 
    </suiteXmlFiles> 
    </configuration> 
</plugin> 

Giải pháp này có một số hạn chế. Tôi chỉ có thể thay đổi một đường dẫn đến bộ kiểm thử mà tôi đã định nghĩa trong tệp pom.xml. Vì vậy, trong ví dụ của tôi nó luôn luôn có hai tập tin. Tôi không thể chạy, cho phép nói, 5 bộ hoặc chỉ một.

Có cách nào bằng cách nào đó tham số toàn bộ phần "suiteXmlFiles" trong tệp pom.xml không?

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
    <suiteXmlFiles> 
     ${multiple_paths_ToMySuiteFiles} 
    </suiteXmlFiles> 
    </configuration> 
</plugin> 

Chạy tất cả mọi thứ mà trận đấu được nhóm thử nghiệm không phải là một lựa chọn cho tôi: Tôi không muốn tải tất cả các dãy phòng tôi đã có và sau đó chạy chỉ là thử nghiệm được lựa chọn sử dụng các nhóm trong TestNG suite. Lý do là một báo cáo được tạo sau khi chạy tất cả các bộ thử nghiệm với các bộ lọc nhóm khác với báo cáo khi chỉ các bộ thử nghiệm đã chọn được chạy.

Trả lời

0

Bạn có thể sử dụng groups tham số hoặc chỉ định -Dgroups = ... trong dòng lệnh:

(cung cấp với JUnit4.8 TestNG/JUnit47 + chỉ) Groups cho thử nghiệm này. Chỉ các lớp/phương pháp/v.v. được trang trí với một trong các nhóm được chỉ định ở đây sẽ được bao gồm trong chạy thử, nếu được chỉ định. Đối với JUnit, tham số này buộc sử dụng nhà cung cấp 4.7 Thông số này bị bỏ qua nếu tham số suiteXmlFiles được chỉ định. .

+0

tôi đề cập đến nó mà tôi không muốn sử dụng các nhóm như nó phá vỡ báo cáo kết quả thử nghiệm và chưa đủ nào – maestr0

+0

linh hoạt hay không linh hoạt, nhưng đó là lựa chọn duy nhất của bạn. Nó có thể linh hoạt như các nhóm của bạn. Tất nhiên ngoài việc chạy thử nghiệm cá nhân. –

5

Chúng tôi cũng đã gặp vấn đề này với các thử nghiệm của mình. Cách giải quyết hiện tại mà chúng tôi sử dụng hiện nay là xác định một biến thuộc tính trong phần thuộc tính và tiêm nó vào khối suiteXMLFiles chắc chắn.

<properties> 
    <!-- Default suites --> 
    <batsSuiteFile>${project.build.testOutputDirectory}/BatsTests.xml</batsSuiteFile> 
    <smokeSuiteFile>${project.build.testOutputDirectory}/SmokeTests.xml</smokeSuiteFile> 

    <!-- Default suite files if not being specified from mvn command line --> 
    <defaultSuiteFiles>${batsSuiteFile},${smokeSuiteFile}</defaultSuiteFiles> 
    <suiteFile>${defaultSuiteFiles}</suiteFile> 
</properties> 

Sau đó, trong phần plugin ...

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.12</version> 
    <configuration> 
     <suiteXmlFiles> 
      <!-- Suite file injection parameter from command line --> 
      <suiteXmlFile>${suiteFile}</suiteXmlFile> 
     </suiteXmlFiles> 
    </configuration> 
</plugin> 

Nếu không có gì được quy định từ dòng lệnh nó sẽ rơi trở lại và mặc định cho 2 dãy phòng đã nêu ở trên trong phần tài sản. Sau đó, nếu bạn muốn kick off một bộ quy định các tập tin bộ bạn có thể làm:

mvn test -DsuiteFile=test1.xml,test2.xml 

Đáng ngạc nhiên từ các tài liệu maven bạn mong đợi rằng suiteXmlFiles arg chỉ nên ghi đè này từ dòng lệnh và chỉ nên chấp nhận một dấu phẩy danh sách phân tách của testng xmls http://maven.apache.org/plugins/maven-surefire-plugin/test-mojo.html#suiteXmlFiles

Nếu có cách nào khác tốt hơn, vui lòng chia sẻ.

+1

@ maestr0 xin vui lòng giúp đánh dấu câu trả lời là chấp nhận nếu nó giúp. – mekdev

+0

cách khác là chạy bên dưới bộ lệnh sau khi kiểm tra mvn -D khác $ {path}/test1 test, kiểm tra mvn -D $ {path}/test2 test và dependency là org.apache.maven.plugins maven-surefire-plugin 2,12 $ {} kiểm tra .xml Badrinath

+0

Thay vào đó hãy sử dụng '-Dsurefire.suiteXmlFiles'. Xem câu trả lời của tôi dưới đây. – norbertpy

12

Theo User Property của suiteXmlFiles Bạn có thể sử dụng:

mvn test -Dsurefire.suiteXmlFiles=test1.xml,test2.xml 
+0

Sử dụng giải pháp này, bạn không cần chỉ định thẻ trong tệp pom.xml. Câu trả lời hay nhất. –