7.1 @Suite annotáció

És néhány gyakrabban használt megjegyzés. Ha nem is használod őket, biztosan látni fogsz velük teszteket. Ezért legalább általánosságban meg kell érteni az ott leírtakat.

A tesztek csoportokba vonhatók. Ehhez van egy speciális megjegyzés @Suite. Példa:

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

Ebben az esetben a @Suite annotáció más megjegyzésekkel párosul.

  • SuiteDisplayName– beállítja a tesztcsoport nevét a naplóban;
  • SelectPackages- beállítja a csomagok listáját, ahol a tesztosztályokat kell keresni;
  • IncludeClassNamePatterns– beállítja a tesztosztálynevek mintáját.

Miért ilyen nehézségek? Nos, képzeld el, hogy a projekt összes tesztjét, mondjuk 50 órán keresztül, végrehajtják. És ezek végrehajtása minden commit után nagyon drága. Ilyen esetben célszerű néhány külön tesztszkriptet létrehozni, és a tesztelést sokkal rugalmasabb módon beállítani.

7.2 @Rendelési megjegyzés

Egy másik gyakori megjegyzés a @TestMethodOrder. Lehetővé teszi a tesztosztályban a tesztmódszerek meghívásának sorrendjének megadását. Nagyon hasznos lehet, ha tudjuk, hogy a metódushívások hatnak egymásra, de egy bizonyos sorrendben mindennek úgy kell működnie, ahogyan kell. Elég gyakran használt.

Először beállíthatja a meghívandó metódusokat ábécé sorrendben :

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

}

Másodszor, minden módszerhez tartozhat egy speciális megjegyzés a sorszámával.

@TestMethodOrder(OrderAnnotation.class)
public class OrderAnnotationUnitTest {

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

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

Vagy akár hozzon létre egy külön osztályt, amely meghatározza a tesztek meghívásának sorrendjét:

@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 megjegyzés

Végül minden tesztnek nevet lehet adni. Kényelmes lehet, ha sok teszt van, és speciális tesztforgatókönyveket (részhalmazokat) hoz létre. Ehhez van egy speciális megjegyzés @DisplayName.

Példa:

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

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

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

A tesztek sorrendjének beállításához hasonlóan itt is létrehozhatunk egy speciális metódust, amely generálja a tesztek és vizsgálati módszerek neveit. Példa:

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

Nézd meg milyen egyszerű :)