Tags:

Chạy JUnit 5 trên các version cũ với @RunWith

Trong JUnit 5, @RunWith annotation đã được thay thế bởi @ExtendWith, thế nhưng @RunWith vẫn được dùng trong JUnit 5 với mục đích tương thích ngược.

Run JUnit5 trên JUnit4-Based Runner

Chúng ta có thể chạy các unit test được viết trên JUnit 5 ở các phiên bản JUnit cũ hơn với @RunWith annotation

Một ví dụ chạy các unit test trên IntellIJ phiên bản cũ chỉ hỗ trợ JUnit 4.

Đầu tiên khởi tạo 1 class cần được test.

public class Greetings {
    public static String sayHello() {
        return "Hello";
    }  
}

Tiếp theo khởi tạo một JUnit 5 file test và đặt @RunWith annotation trước class.

@RunWith(JUnitPlatform.class)
public class GreetingsTest {
    @Test
    void whenCallingSayHello_thenReturnHello() {
        assertTrue("Hello".equals(Greetings.sayHello()));
    }
}

JUnitFlatform class là một JUnit4-based runner trong Junit 5 cho phép chúng ta chạy các unit test trên các phiên bản cũ.

Note: Junit 4 không hỗ trợ tất cả các tính năng trên các phiên bản JUnit mới, nên trong một số trường hợp có thể unit test sẽ không chạy được.

Run test trên môi trường hỗ trợ JUnit 5

Bây giờ chúng ta sẽ run Junit 5 test trên phiên bản IntellIJ mới hỗ trợ JUnit 5. Trong trường hợp này chúng ta không cần @RunWith ở đầu class.

public class GreetingsTest {
    @Test
    void whenCallingSayHello_thenReturnHello() {
        assertTrue("Hello".equals(Greetings.sayHello()));
    }
}

Migrate JUnit4 lên JUnit 5

Giả sử chúng ta có một Spring test phiên bản JUnit 4

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class GreetingsSpringTest {
    // ...
}

Để migrate GreetingsSpringTest từ JUnit4 lên JUnit5 chỉ cần thay @RunWith bằng @ExtendWith.

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = { SpringTestConfiguration.class })
public class GreetingsSpringTest {
    // ...
}

 SpringExtension class được cung cấp bởi String 5 để tích hợp SpringTestContext famework sang JUnit5. 

Tóm lược

Trong bài viết này chúng đã tìm hiểu về cách sử dụng @RunWith trong Junit5 và tìm hiểu sơ qua cách migrate JUnit4 lên JUnit5 trong Spring framework. Cá nhân mình đánh giá @RunWith sẽ là một lựa chọn kém hiệu quả dự án update lên JUnit5 thì nên update environment lên JUnit5 để tránh phải tương tích ngược vừa phức tạp mà còn tăng thời gian chạy unit test.

Bài viết được dịch từ: https://www.baeldung.com/junit-5-runwith

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x