7.1 anotasi @Suite

Dan beberapa anotasi yang lebih sering digunakan. Bahkan jika Anda tidak menggunakannya, Anda pasti akan melihat tes dengannya. Oleh karena itu, perlu dipahami setidaknya secara umum apa yang tertulis di sana.

Tes dapat digabungkan menjadi beberapa kelompok. Ada catatan khusus untuk ini @Suite. Contoh:

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

Dalam hal ini, anotasi @Suite dipasangkan dengan anotasi lain.

  • SuiteDisplayName– menetapkan nama grup uji di log;
  • SelectPackages- menetapkan daftar paket tempat mencari kelas uji;
  • IncludeClassNamePatterns– menetapkan pola nama kelas uji.

Mengapa kesulitan seperti itu? Nah, bayangkan semua pengujian proyek dilakukan, katakanlah, 50 jam. Dan untuk mengeksekusinya setelah setiap komit sangatlah mahal. Dalam kasus seperti itu, ada gunanya membuat beberapa skrip pengujian terpisah dan menyiapkan pengujian dengan cara yang jauh lebih fleksibel.

7.2 Anotasi @Pesanan

Anotasi umum lainnya adalah @TestMethodOrder. Ini memungkinkan Anda untuk menentukan urutan metode pengujian yang dipanggil di kelas pengujian. Ini bisa sangat berguna ketika Anda mengetahui bahwa pemanggilan metode saling memengaruhi, tetapi dalam urutan tertentu, semuanya harus berfungsi sebagaimana mestinya. Digunakan cukup sering.

Pertama, Anda dapat mengatur metode yang akan dipanggil dalam urutan abjad :

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

}

Kedua, setiap metode dapat memiliki anotasi khusus dengan nomor urutnya.

@TestMethodOrder(OrderAnnotation.class)
public class OrderAnnotationUnitTest {

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

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

Atau bahkan buat kelas terpisah yang akan menentukan urutan pemanggilan tes:

@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 anotasi @DisplayName

Terakhir, setiap tes dapat diberi nama. Akan lebih mudah jika ada banyak pengujian dan Anda membuat skenario khusus (subset) pengujian. Ada catatan khusus untuk ini @DisplayName.

Contoh:

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

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

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

Seperti dalam mengatur urutan pengujian, di sini Anda dapat membuat metode khusus yang akan menghasilkan nama pengujian dan metode pengujian. Contoh:

@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();
        }
 }
}

Lihat betapa mudahnya :)