2012-09-24 46 views
7

Tôi có Junit 4.8.2 và maven 3 Một số thử nghiệm trong ứng dụng của tôi sẽ không thành công trong trường hợp thất bại và một số không nên (chỉ báo cáo rằng các kiểm tra tùy chọn sau không thành công)JUnit tùy chọn/yêu cầu kiểm tra

Làm thế nào tôi có thể làm điều đó với junit và nếu tôi không thể thì có thể testng có thể?

Ví dụ: Tôi có hai trường hợp kiểm tra:

Đầu tiên không thực sự quan trọng và có thể không thành công do thời gian chờ kết nối, không khả dụng dịch vụ, v.v. Vì vậy, nếu nó thất bại, tôi không muốn thất bại toàn xây dựng, chỉ để cho phép người dùng biết về nó và ghi vào an ủi

Thứ hai là ai thực sự quan trọng và nếu nó thất bại - xây dựng nên thất bại cũng

Tôi biết về @Ignore - nó không phải là những gì tôi đang tìm kiếm, bởi vì tôi không muốn bỏ qua bất kỳ bài kiểm tra nào.

Tôi biết về @Category vì vậy nếu bạn biết cách định cấu hình plugin chắc chắn để nói: nếu danh mục com.me.Required - xây dựng nên bị lỗi trong trường hợp thất bại và nếu danh mục com.me.Optional - xây dựng không nên thất bại

+0

gì chính xác là câu hỏi của bạn? Bạn đã viết các trường hợp thử nghiệm sẽ thất bại hay không? Họ trông giống như thế nào? Pom của bạn trông như thế nào? – khmarbaise

+0

Tôi đã cập nhật câu hỏi của mình. Xin hãy xem –

Trả lời

3

Cân nhắc sử dụng plugin failsafe cho các thử nghiệm của bạn được phép không thành công và đặt cờ testFailureIgnore thành true.

Để use plugin chạy failsafe bạn phải thêm các plugin để bạn pom

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>foo.bar</groupId> 
    <artifactId>test</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-failsafe-plugin</artifactId> 
       <version>2.12.4</version> 
       <executions> 
        <execution> 
         <goals> 
          <goal>integration-test</goal> 
          <goal>verify</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <testFailureIgnore>true</testFailureIgnore> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

Plugin chắc chắn hơn sẽ mỗi mặc định thực hiện kiểm tra tên như Test. Plugin không an toàn sẽ theo mặc định thực thi thử nghiệm có tên là IT.

Với các bài kiểm tra

import static org.junit.Assert.*; 

import org.junit.Test; 

public class SurefireTest { 

    @Test 
    public void test() { 
     assertTrue(true); 
    } 

} 

import static org.junit.Assert.*; 

import org.junit.Test; 

public class FailsafeIT { 

    @Test 
    public void test() { 
     assertTrue(false); 
    } 

} 

Chạy mvn install bây giờ sẽ dẫn đến

[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building test 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
. 
. 
. 
------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running SurefireTest 
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.062 sec 

Results : 

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 
. 
. 
. 
------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running FailsafeIT 
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.072 sec <<< FA 
ILURE! 
... 
Results : 

Failed tests: test(FailsafeIT) 

Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 
. 
. 
. 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.174s 
[INFO] Finished at: Sat Sep 29 08:19:38 CEST 2012 
[INFO] Final Memory: 9M/245M 
[INFO] ------------------------------------------------------------------------ 
+0

Có cho phép áp dụng testFailureIgnore cho không phải tất cả các thử nghiệm không?Tôi không nghĩ như vậy –

+0

@Sergey Kravchenya Tôi không nghĩ rằng tùy chọn này có sẵn. Vì vậy, tôi đề nghị để chạy thử nghiệm mà không nên thất bại với các plugin surefire và chạy thử nghiệm được phép thất bại với plugin failsafe (và testFailureIgnore đặt thành 'true') – FrVaBe

+0

là nó có thể có hai plugin này với nhau? Nếu vậy, xin vui lòng chỉnh sửa câu trả lời của bạn và tôi sẽ đánh dấu nó là chấp nhận :) Cảm ơn –

1
  1. Bạn có thể sử dụng @Ignore, xem Is there a way to skip only a single test in maven?

  2. Bạn có thể bỏ qua các bài kiểm tra trong một gói nhất định Is there a way to tell surefire to skip tests in a certain package? hoặc http://maven.apache.org/plugins/maven-failsafe-plugin/examples/inclusion-exclusion.html hoặc

  3. Bạn có thể sử dụng Jun nó 4,8 Categories JUnit Categories http://maven.apache.org/plugins/maven-failsafe-plugin/examples/junit.html

  4. Bạn có thể sử dụng skipITs http://maven.apache.org/plugins/maven-failsafe-plugin/verify-mojo.html#skipITs

Tôi nghĩ rằng JUnit 4,8 Categories thực sự là những gì bạn đang tìm kiếm.

Các vấn đề liên quan