Hiển thị test name trong Junit5

Đặt tên cho 1 tes trong automation cũng giống như tên một test case phải cố gắng cân bằng 3 yếu tố:

  • Dễ hiểu
  • Đủ ý
  • Và ngắn nhất có thể

Nghe cứ như đòi mua 1 cái laptop “rẻ, bền, đẹp” ấy nhỉ. =)))) nhưng không phải là không thể làm được. Với sự giúp ích của JUnit5, bạn có thể config dễ dàng với 1 số techniques khác nhau.

I. Dùng @DisplayName

Annotation @DisplayName có thể áp dụng cho:

  • Class
  • Method

Ví dụ

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;

@DisplayName("Login")
public class Login {

    @Nested
    @DisplayName("passed")
    class PositiveCases{

        @Test
        @DisplayName("Using right credentials")
        void loginWithRightCredentials(){
            System.out.println("login success");
        }
    }

    @Nested
    @DisplayName("failed")
    class NegativeCases{

        @Test
        @DisplayName("Using wrong credentials")
        void loginWithWrongCredentials(){
            System.out.println("login failed");
        }

        @Test
        @DisplayName("When did not input anything")
        void loginWithNoCredentials(){
            System.out.println("login failed");
        }
    }

}

II. Dùng @DisplayNameGeneration

Việc viết tên test trên DisplayName và tên method có vẻ như là double work. Ta có thể giảm bớt việc đó bằng cách:

  • Sử dụng “_” để viết test dễ đọc hơn. (Điều này vi phạm convention đặt tên method của Java Standard, nhưng để tăng tính dễ đọc thì cũng có thể bỏ qua)
  • Ta có thể sử dụng thêm @DisplayNameGeneration để remove cái “_” trong result.
  • Để tránh việc viết đi viết lại cái dòng @DisplayNameGeneration ở đầu mỗi class, ta có thể viết nó vào file junit-platform.properties đặt ở trong src/test/resources

Nội dung file sẽ như sau:

junit.jupiter.displayname.generator.default =  org.junit.jupiter.api.DisplayNameGenerator$ReplaceUnderscores

Ngoài ra, nếu bạn muốn custom 1 cái rule để displayName cũng được, bạn có thể follow hướng dẫn ở đây.

III. Tổng kết

Với việc sử dụng thêm 1 – 2 cái annotation, test name đã trở nên dễ đọc và đầy đủ thông tin mà không quá tốn công sức. Hi vọng, sẽ có ích cho ai đang dùng Junit5. Happy learning!

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments