7.1 @Suite anotasi

Lan sawetara anotasi sing luwih kerep digunakake. Sanajan sampeyan ora nggunakake, sampeyan mesthi bakal weruh tes karo wong-wong mau. Mulane, iku perlu kanggo mangerteni ing paling umum apa sing ditulis ing kono.

Tes bisa digabung dadi klompok. Ana anotasi khusus kanggo iki @Suite. Tuladha:

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

Ing kasus iki, anotasi @Suite dipasangake karo anotasi liyane.

  • SuiteDisplayName– nyetel jeneng klompok test ing log;
  • SelectPackages- nyetel dhaptar paket ing ngendi goleki kelas tes;
  • IncludeClassNamePatterns– nyetel pola jeneng kelas test.

Yagene kangelan kuwi? Bayangake manawa kabeh tes proyek kasebut ditindakake, ayo ngomong, 50 jam. Lan kanggo nglakokake sawise saben komitmen larang banget. Ing kasus kaya mengkono, migunani kanggo nggawe sawetara skrip tes sing kapisah lan nyiyapake pangujian kanthi cara sing luwih fleksibel.

7.2 @Pesenan anotasi

Anotasi umum liyane yaiku @TestMethodOrder. Iki ngidini sampeyan nemtokake urutan cara tes diarani ing kelas tes. Bisa migunani banget yen sampeyan ngerti yen telpon cara mengaruhi saben liyane, nanging ing urutan tartamtu, kabeh kudu bisa digunakake. Digunakake cukup asring.

Pisanan, sampeyan bisa nyetel cara supaya bisa diarani miturut urutan abjad :

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

}

Kapindho, saben cara bisa duwe anotasi khusus kanthi nomer ordinal.

@TestMethodOrder(OrderAnnotation.class)
public class OrderAnnotationUnitTest {

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

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

Utawa malah nggawe kelas sing kapisah sing bakal nemtokake urutan tes kasebut:

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

Pungkasan, saben tes bisa diwenehi jeneng. Bisa trep yen ana akeh tes lan sampeyan nggawe skenario khusus (subset) tes. Ana anotasi khusus kanggo iki @DisplayName.

Tuladha:

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

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

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

Kaya ing kasus nyetel urutan tes, ing kene sampeyan bisa nggawe cara khusus sing bakal ngasilake jeneng tes lan metode tes. Tuladha:

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

Deleng carane gampang :)