2016-05-01 12 views
29

Tôi đã viết một phương pháp thử nghiệm đơn giản với JUnit 5:chắc chắn là không nhặt Junit 5 xét nghiệm

public class SimlpeTest { 
    @Test 
    @DisplayName("Some description") 
    void methodName() { 
     // Testing logic for subject under test 
    } 
} 

Nhưng khi tôi chạy mvn test, tôi nhận:

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Running SimlpeTest 
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

Bằng cách nào đó, chắc chắn hơn không nhận ra lớp kiểm tra đó. My pom.xml trông giống như:

<properties> 
    <java.version>1.8</java.version> 
    <junit.version>5.0.0-SNAPSHOT</junit.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.junit</groupId> 
     <artifactId>junit5-api</artifactId> 
     <version>${junit.version}</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<repositories> 
    <repository> 
     <id>snapshots-repo</id> 
     <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
     <releases> 
      <enabled>false</enabled> 
     </releases> 
     <snapshots> 
      <updatePolicy>always</updatePolicy> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

Bất kỳ ý tưởng nào về cách thực hiện công việc này?

+1

Ngay bây giờ, bạn phải sử dụng triển khai đặc biệt của plugin chắc chắn. Kiểm tra các ví dụ về nhóm junit [ở đây] (https://github.com/junit-team/junit5-samples/blob/master/junit5-maven-consumer/pom.xml) – jah

+1

Câu hỏi được dựa trên một phiên bản lỗi thời nhưng [câu trả lời này] (http://stackoverflow.com/a/36970518/2525313) được dựa trên hiện tại (tính đến tháng 12 năm 2016). – Nicolai

+0

@Nicolai Cảm ơn bạn đã cập nhật câu trả lời. Dù sao tôi sẽ đánh giá cao chỉnh sửa của bạn về câu hỏi, nếu bạn có thời gian. –

Trả lời

47

maven-surefire-plugin, tính đến hôm nay, hiện not have full support of JUnit 5. Đã xảy ra sự cố mở về việc thêm hỗ trợ này vào SUREFIRE-1206.

Vì vậy, bạn cần sử dụng custom provider. Một nhóm đã được nhóm JUnit phát triển; từ user guide, bạn cần phải thêm các nhà cung cấp junit-platform-surefire-provider và thực hiện TestEngine cho API mới:

<build> 
    <plugins>   
    <plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <!-- latest version (2.20.1) does not work well with JUnit5 --> 
     <version>2.19.1</version> 
     <dependencies> 
     <dependency> 
      <groupId>org.junit.platform</groupId> 
      <artifactId>junit-platform-surefire-provider</artifactId> 
      <version>1.0.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.junit.jupiter</groupId> 
      <artifactId>junit-jupiter-engine</artifactId> 
      <version>5.0.3</version> 
     </dependency> 
     </dependencies> 
    </plugin> 
    </plugins> 
</build> 

Ngoài ra, hãy chắc chắn tuyên bố junit-jupiter-api phụ thuộc với một phạm vi test:

<dependencies> 
    <dependency> 
    <groupId>org.junit.jupiter</groupId> 
    <artifactId>junit-jupiter-api</artifactId> 
    <version>5.0.3</version> 
    <scope>test</scope> 
    </dependency> 
</dependencies> 
+12

Đáng lưu ý rằng tại thời điểm này chắc chắn 2.20.1 không hoạt động với nhà cung cấp junit 5 do đó 2.19.1 được sử dụng trong mẫu vẫn hợp lệ mặc dù đã qua năm. – splatch

+1

Cảm ơn @splatch, bạn đã lưu ngày của tôi ;-) – dSebastien

+1

Đã kéo tóc của tôi qua này quá, nhờ @splatch – RedShift

0

Đang cập nhật để maven-surefire-plugin:2.20 chạy các bài kiểm tra Junit5 không có vấn đề gì.

Nhưng tôi đang sử dụng phiên bản M6 vào Junit5.

+0

Không đơn giản như vậy (ít nhất là tại thời điểm này). Xem [Hướng dẫn sử dụng JUnit 5] (http://junit.org/junit5/docs/current/user-guide/#running-tests-build-maven) – FrVaBe

+0

@FrVaBe lạ hoạt động của nó tốt với tôi với phiên bản m6. – LazerBanana

+0

surefire-2.20 + kiểm tra junit-5.0.2 ok – dragon

0

Cách đơn giản nhất junit-platform cho đến ngày hôm nay:

<plugin> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.19.1</version> 
     <dependencies> 
      <dependency> 
       <groupId>org.junit.platform</groupId> 
       <artifactId>junit-platform-surefire-provider</artifactId> 
       <version>1.1.0</version> 
      </dependency> 
     </dependencies> 
    </plugin> 

Ngoài ra, trong trường hợp nếu bạn sử dụng Spring. Bạn chỉ cần thêm thư viện này nếu bạn muốn sử dụng JUnit 5 vào mùa xuân 4. Spring 5 hỗ trợ JUnit 5 ra khỏi hộp, hoàn toàn với plugin chắc chắn.

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