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ű :)
GO TO FULL VERSION