Třída JUnit Assertions Class obsahuje kolekci statických metod, které vám umožňují provádět testy jednotek. Tvrzení jsou jednou ze základních funkcí JUnit. Tato třída má více než padesát různých metod. Některé testy třídy Assertions selžou, pokud je podmínka pravdivá, zatímco jiné selžou, pokud je podmínka nepravdivá.
Třída Assertions má také mnoho přetížených metod. Každá metoda tvrzení má alespoň dvě přetížené metody. Objevte některé z populárnějších metod třídy Assertions a zjistěte, jak je používat k provádění jednotkových testů.
Metoda claimEquals
Metoda JUnit 5 ClaimEquals má více než deset variant. Tato metoda je jednou z nejpopulárnějších metod třídy Assertions. Jedna varianta metody claimEquals má očekávanou hodnotu a funkci, kterou chcete vyhodnotit (skutečnou hodnotu). Druhá hlavní varianta vyžaduje další třetí argument. Toto je chybová zpráva, která se zobrazí, pokud je Test jednotky JUnit selže.
K přetížení metody claimEquals dochází u různých datových typů. Některé metody přetížení sustainEquals berou čtvrtý argument zvaný delta. Jiné verze nahrazují řetězec selhání funkčním rozhraním Dodavatel ve formě a
lambda výraz.AssertionsMethods Java třída
balík com.program;
veřejnosttřídaMetody tvrzení{
veřejnoststatickýintnáměstí(int číslo){
vrátit se num * num;
}
}
Výše uvedená třída AssertionsMethods Java má jedinou metodu nazvanou square. Metoda čtverce přebírá celočíselnou hodnotu a vrací svou druhou mocninu. Chcete-li otestovat čtvercovou metodu a jakoukoli budoucí metodu ze třídy AssertionsMethods, budete muset vytvořit testovací případ JUnit.
Testovací případ AssertionsMethodsTest JUnit
balík com.program;
importstatickýorg.junit.Tvrdit.assertEquals;
importstatickýorg.junit.Jupiter.api.Tvrzení.*;importorg.junit.Jupiter.api.Test;
třídaTvrzeníMetodyTest{
@Test
prázdnotatestSquare(){
tvrdit Rovná se(25, AssertionMethods.náměstí(5));
claimEquals (36, AssertionMethods.square (6), "Vaše čtvercové hodnoty se neshodovaly.");
claimEquals (49, AssertionMethods.square (7), () ->"Vaše čtvercové hodnoty se neshodovaly.");
}
}
Metoda testSquare() používá k testování metody square() tři variace funkce ClaimEquals(). Každá funkce ClaimEquals() je úspěšná, protože všechny očekávané hodnoty odpovídají skutečným hodnotám vráceným metodou square().
Metoda claimNull
Třída JUnit Assertions má přesně tři metody statementNull. Každá z těchto metod přebírá jeden nebo více argumentů a potvrzuje, zda je daný objekt null. Pokud daný objekt není null, test se nezdaří.
@Test
veřejnostprázdnotatestStringValue(){
Tětiva stringValue = nula;
ssesNull (stringValue);
assetNull (stringValue, "Hodnota vašeho řetězce není null");
ssesNull (stringValue, () ->"Hodnota vašeho řetězce není null");
}
První metodassesNull() vezme objekt typu string a zkontroluje, zda je null. Druhá metodassesNull() přebírá objekt typu string a zprávu typu string, které se zobrazí, pokud se test nezdaří. Třetí a poslední metoda claimNull() přebírá objekt, který chcete vyhodnotit, a funkční rozhraní dodavatele.
Ve výše uvedeném testovacím případě rozhraní Dodavatel funguje jako cíl přiřazení pro výraz lambda. Pokud test selže, výraz lambda vygeneruje chybovou zprávu.
Metoda claimTrue
Metoda ClaimTrue() má šest variant. Každá metoda tvrdí, zda je daná podmínka pravdivá. Pokud je podmínkaasseTrue() nepravdivá, test selže.
@Test
prázdnotatestEvenNumbers(){
int číslo1 = 10;
int číslo2 = 16;
int číslo 3 = 26;
tvrditpravda (číslo1 < num2);
tvrditpravda (číslo 3 > číslo2, "Vaše podmínka není pravdivá.");
tvrditpravda (číslo1 < číslo3, () ->" Vaše podmínka není pravdivá.");
claimTrue(() -> num1%2 == 0);
claimTrue(() -> num2%2 == 0, "Vaše hodnota není sudé číslo.");
claimTrue(() -> num3%2 == 0, () ->"Vaše hodnota není sudé číslo.");
}
Metoda testEvenNumbers() ukazuje, jak používat všech šest metod sustainTrue(). Všechny výše uvedené metody jsou pravdivé, proto se tento test jednotky provede bez selhání nebo chyby.
- ssesTrue (booleovská podmínka): tato metoda přebírá booleovskou podmínku a potvrzuje, pokud je pravdivá. Příklad této metody v kódu výše tvrdí, že první celočíselná hodnota je menší než druhá.
- asseTrue (logická podmínka, zpráva String): tato metoda používá k testování booleovskou podmínku a řetězec k zobrazení, pokud je nepravdivý.
- claimTrue (Booleovská podmínka, Dodavatel
messageSupplier): tato metoda bere jako lambda výraz booleovské a dodavatelské funkční rozhraní. Dodavatel zprávy obsahuje řetězec, který se zobrazí, pokud je logická podmínka nepravdivá. - serveTrue (BooleanSupplier booleanSupplier): tato metoda používá funkční rozhraní BooleanSupplier ve formě výrazu lambda, který se vyhodnotí jako true nebo false. Příklad této metody v kódu používá výraz lambda. Testuje zbytek prvního celého čísla děleného dvěma, aby určil, zda je sudé nebo liché.
- ssesTrue (BooleanSupplier booleanSupplier, String message): tato metoda přebírá funkční rozhraní BooleanSupplier ve formě výrazu lambda. Pokud BooleanSupier není pravdivý, vytiskne se také textová zpráva.
- claimTrue (BooleanSupplier booleanSupplier, Dodavatel
messageSupplier): tato metoda vyžaduje funkční rozhraní BooleanSupplier k uplatnění. Vyžaduje také funkční rozhraní Dodavatel, což je výraz lambda, který vypíše hodnotu řetězce, pokud test selže.
Metoda claimFalse
MetodaasseFalse() je opakem metodyasseTrue(). Tato metoda vyhodnocuje danou podmínku, aby zjistila, zda není nepravdivá. Pokud je daná podmínka pravdivá, pak se test sustainFalse() nezdaří. Metoda claimFalse() má také šest variant, které přijímají stejné argumenty jako jejich protějškyassetTrue().
@Test
prázdnotatestNotEvenNumbers(){
int číslo1 = 11;
int číslo2 = 17;
int číslo 3 = 27;
claimFalse (num2 < num1);
claimFalse (num2 > číslo 3, " Vaše podmínka není falešná.");
claimFalse (num3 < číslo1, () ->" Vaše podmínka není falešná.");
asseFalse(() -> num1%2 == 0);
asseFalse(() -> num2%2 == 0, "Vaše hodnota je sudé číslo.");
asseFalse(() -> num3%2 == 0, () ->"Vaše hodnota je sudé číslo.");
}
Všech šest metod sustainFalse() v metodě testNotEvenNumbers() má za následek hodnotu false, což znamená, že testy sustainFalse() jsou úspěšné.
Výhody Unit testování
Unit testování je nedílnou součástí procesu vývoje softwaru. Velké softwarové projekty selhávají z různých důvodů, od týmů, které na nich pracují, až po vývojové přístupy.
Účelem testování jednotek je eliminovat selhání softwaru poskytnutím včasné detekce chyb. To vyžaduje, aby týmy vytvořily jasné specifikace, zlepšily návrh softwaru prostřednictvím dokumentace chyb a poskytly podporu pro údržbu softwaru.
Testování jednotek není jediný přístup k testování softwaru, který byste měli použít ve svém životním cyklu vývoje, je to jen velmi dobré místo, kde začít.