7.1 Chú thích @Suite

Và một vài chú thích được sử dụng thường xuyên hơn. Ngay cả khi bạn không sử dụng chúng, bạn chắc chắn sẽ thấy các thử nghiệm với chúng. Do đó, cần phải hiểu ít nhất là về mặt tổng quát những gì được viết ở đó.

Các bài kiểm tra có thể được kết hợp thành các nhóm. Có một chú thích đặc biệt cho điều này @Suite. Ví dụ:

@Suite
@SuiteDisplayName("JUnit Platform Suite Demo")
@SelectPackages("com.codegym.test")
@IncludeClassNamePatterns(".*Tests")
class SuiteDemo {
}

Trong trường hợp này, chú thích @Suite được ghép nối với các chú thích khác.

  • SuiteDisplayName– đặt tên của nhóm thử nghiệm trong nhật ký;
  • SelectPackages- đặt danh sách các gói để tìm các lớp kiểm tra;
  • IncludeClassNamePatterns– đặt mẫu tên lớp kiểm tra.

Tại sao khó khăn như vậy? Hãy tưởng tượng rằng tất cả các thử nghiệm của dự án được thực hiện, giả sử là 50 giờ. Và để thực hiện chúng sau mỗi lần xác nhận là rất tốn kém. Trong trường hợp như vậy, sẽ rất hữu ích nếu bạn tạo một số tập lệnh thử nghiệm riêng biệt và thiết lập thử nghiệm theo cách linh hoạt hơn nhiều.

7.2 Chú thích @Order

Một chú thích phổ biến khác là @TestMethodOrder. Nó cho phép bạn chỉ định thứ tự mà các phương thức thử nghiệm được gọi trong lớp thử nghiệm. Nó có thể rất hữu ích khi bạn biết rằng các cuộc gọi phương thức ảnh hưởng lẫn nhau, nhưng theo một thứ tự nhất định, mọi thứ sẽ hoạt động như bình thường. Được sử dụng khá thường xuyên.

Trước tiên, bạn có thể đặt các phương thức được gọi theo thứ tự bảng chữ cái :

@TestMethodOrder(MethodOrderer.MethodName.class)
public class AlphanumericOrderUnitTest {

}

Thứ hai, mỗi phương pháp có thể có một chú thích đặc biệt với số thứ tự của nó.

@TestMethodOrder(OrderAnnotation.class)
public class OrderAnnotationUnitTest {

    @Test
    @Order(1)
    public void firstTest() {
    }

    @Test
    @Order(2)
    public void secondTest() {
    }
}

Hoặc thậm chí tạo một lớp riêng biệt sẽ chỉ định thứ tự các bài kiểm tra được gọi:

@TestMethodOrder(CustomOrder.class)
public class CustomOrderUnitTest {

}

//sort method names alphabetically, but ignoring case
public class CustomOrder implements MethodOrderer {
    public void orderMethods(MethodOrdererContext context) {
        context.getMethodDescriptors().sort(
        (MethodDescriptor m1, MethodDescriptor m2)->
           m1.getMethod().getName().compareToIgnoreCase(m2.getMethod().getName()));
    }
}

7.3 Chú thích @DisplayName

Cuối cùng, mỗi bài kiểm tra có thể được đặt tên. Có thể thuận tiện nếu có nhiều thử nghiệm và bạn tạo các kịch bản đặc biệt (tập hợp con) của các thử nghiệm. Có một chú thích đặc biệt cho điều này @DisplayName.

Ví dụ:

@DisplayName("Friendly name for the test")
public class DisplayNameCustomTest {

    @Test
    @DisplayName("Input Validation")
    void inputData() {
    }

    @DisplayName("Checking critical situations")
    @Test
    void criticalCases() {
    }
}

Như trong trường hợp đặt thứ tự các bài kiểm tra, ở đây bạn có thể tạo một phương thức đặc biệt sẽ tạo tên của các bài kiểm tra và phương thức kiểm tra. Ví dụ:

@DisplayNameGeneration(DisplayNameGeneratorUnitTest.ReplaceCamelCase.class)
class DisplayNameGeneratorUnitTest {

    @Test
    void camelCaseName() {
    }

    static class ReplaceCamelCase extends DisplayNameGenerator.Standard {
        @Override
        public String generateDisplayNameForClass(Class testClass) {
            return super.generateDisplayNameForClass(testClass).toUpperCase();
        }
 }
}

Xem cách dễ dàng là :)