JUnit Assertions Class innehåller en samling statiska metoder som låter dig utföra enhetstester. Påståenden är en av JUnits kärnfunktioner. Denna klass har över femtio olika metoder. Vissa Assertions klasstest kommer att misslyckas om ett villkor är sant, medan andra kommer att misslyckas om ett villkor är falskt.
Klassen Assertions har också många överbelastade metoder. Varje påståendemetod har minst två överbelastade metoder. Upptäck några av de mer populära Assertions klassmetoderna och ta reda på hur du använder dem för att utföra enhetstester.
AssertEquals-metoden
JUnit 5 assertEquals-metoden har över tio varianter. Denna metod är en av de mer populära Assertions klassmetoderna. En variant av assertEquals-metoden tar ett förväntat värde och den funktion du vill utvärdera (verkligt värde). En andra större variant tar ytterligare ett tredje argument. Detta är ett felmeddelande som visas om JUnit enhetstest misslyckas.
Överbelastningen av assertEquals-metoden sker med olika datatyper. Vissa assertEquals-överbelastningsmetoder tar ett fjärde argument som kallas delta. Andra versioner ersätter felsträngen med ett leverantörsfunktionellt gränssnitt, i form av en
lambda uttryck.AssertionsMethods Java Class
paket com.program;
offentligklassPåståendemetoder{
offentligstatiskintfyrkant(int num){
lämna tillbaka num * num;
}
}
AssertionsMethods Java-klassen ovan har en enda metod som kallas kvadrat. Kvadratmetoden tar ett heltalsvärde och returnerar dess kvadrat. För att testa kvadratmetoden och eventuell framtida metod från AssertionsMethods-klassen måste du skapa ett JUnit-testfall.
Testfallet för AssertionsMethodsTest JUnit
paket com.program;
importerastatiskorg.junit.Hävda.assertEquals;
importerastatiskorg.junit.Jupiter.api.Påståenden.*;importeraorg.junit.Jupiter.api.Testa;
klassAssertionsMethodsTest{
@Testa
tomhettestSquare(){
assertEquals(25, Påståendemetoder.fyrkant(5));
assertEquals (36, AssertionMethods.square (6), "Dina kvadratvärden matchade inte.");
assertEquals (49, AssertionMethods.square (7), () ->"Dina kvadratvärden matchade inte.");
}
}
Metoden testSquare() använder tre varianter av assertEquals() för att testa square()-metoden. Varje assertEquals() är en framgång, eftersom alla förväntade värden matchar de faktiska värdena som returneras av square()-metoden.
AssertNull-metoden
Klassen JUnit Assertions har exakt tre assertNull-metoder. Var och en av dessa metoder tar ett eller flera argument och hävdar om det givna objektet är null. Om ett givet objekt inte är null, kommer testet att misslyckas.
@Testa
offentligtomhettestStringValue(){
Sträng stringValue = null;
assertNull (stringValue);
assertNull (stringValue, "Ditt strängvärde är inte null");
assertNull (stringValue, () ->"Ditt strängvärde är inte null");
}
Den första assertNull()-metoden tar ett strängobjekt och kontrollerar om det är null. Den andra assertNull()-metoden tar ett strängobjekt och ett strängmeddelande att visa om testet misslyckas. Den tredje och sista assertNull()-metoden tar objektet du vill utvärdera och ett leverantörsfunktionellt gränssnitt.
I testfallet ovan fungerar leverantörsgränssnittet som ett tilldelningsmål för ett lambdauttryck. Lambdauttrycket genererar ett felmeddelande om testet misslyckas.
AssertTrue-metoden
AssertTrue()-metoden har sex varianter. Varje metod hävdar om ett givet villkor är sant. Om ett assertTrue()-villkor är falskt misslyckas testet.
@Testa
tomhettestEvenNumbers(){
int num1 = 10;
int num2 = 16;
int num3 = 26;
assertTrue (nummer1 < num2);
assertTrue (nummer3 > nummer 2, "Ditt tillstånd är inte sant.");
assertTrue (nummer1 < nummer3, () ->" Ditt tillstånd är inte sant.");
assertTrue(() -> num1%2 == 0);
assertTrue(() -> num2%2 == 0, "Ditt värde är inte ett jämnt tal.");
assertTrue(() -> num3%2 == 0, () ->"Ditt värde är inte ett jämnt tal.");
}
Metoden testEvenNumbers() visar hur man använder alla sex assertTrue()-metoderna. Alla metoderna ovan är sanna, därför körs detta enhetsteste utan fel eller fel.
- assertTrue (booleskt villkor): denna metod tar ett booleskt villkor och hävdar om det är sant. Exemplet på denna metod i koden ovan hävdar om det första heltalsvärdet är mindre än det andra.
- assertTrue (booleskt villkor, strängmeddelande): denna metod kräver ett booleskt villkor för att testa och en sträng för att visa om det är falskt.
- assertTrue (booleskt skick, leverantör
messageSupplier): denna metod tar ett booleskt och ett leverantörsfunktionellt gränssnitt, som ett lambda-uttryck. Meddelandeleverantören innehåller en sträng som ska visas om det booleska villkoret är falskt. - assertTrue (BooleanSupplier booleanSupplier): denna metod tar ett funktionellt gränssnitt för BooleanSupplier, i form av ett lambda-uttryck som utvärderas till sant eller falskt. Exemplet på denna metod i koden använder ett lambda-uttryck. Den testar resten av det första heltal dividerat med två för att avgöra om det är jämnt eller udda.
- assertTrue (BooleanSupplier booleanSupplier, strängmeddelande): denna metod tar ett funktionellt gränssnitt för BooleanSupplier i form av ett lambda-uttryck. Det krävs också ett strängmeddelande för att skriva ut om BooleanSupier inte är sant.
- assertTrue (BooleanSupplier booleanSupplier, Supplier
messageSupplier): denna metod kräver ett funktionellt gränssnitt för BooleanSupplier för att hävda. Det krävs också ett leverantörsfunktionellt gränssnitt, vilket är ett lambda-uttryck som kommer att skriva ut ett strängvärde om testet misslyckas.
AssertFalse-metoden
AssertFalse()-metoden är motsatsen till assertTrue()-metoden. Denna metod utvärderar ett givet tillstånd för att se om det är falskt. Om ett givet villkor är sant, kommer assertFalse()-testet att misslyckas. AssertFalse()-metoden har också sex varianter som accepterar samma argument som deras assertTrue()-motsvarigheter.
@Testa
tomhettestNotEvenNumbers(){
int num1 = 11;
int num2 = 17;
int num3 = 27;
hävdaFalse (nummer2 < num1);
hävdaFalse (nummer2 > nummer 3, " Ditt tillstånd är inte falskt.");
hävdaFalse (nummer3 < num1, () ->" Ditt tillstånd är inte falskt.");
hävdaFalse(() -> num1%2 == 0);
hävdaFalse(() -> num2%2 == 0, "Ditt värde är ett jämnt tal.");
hävdaFalse(() -> num3%2 == 0, () ->"Ditt värde är ett jämnt tal.");
}
De sex assertFalse()-metoderna i testNotEvenNumbers()-metoden resulterar alla i false, vilket betyder att assertFalse()-testerna är framgångsrika.
Fördelarna med enhetstestning
Enhetstestning är en integrerad del av mjukvaruutvecklingsprocessen. Stora programvaruprojekt misslyckas av olika anledningar, allt från teamen som arbetar med dem till utvecklingsmetoder.
Syftet med enhetstestning är att eliminera programvarufel genom att tillhandahålla tidig feldetektering. Detta kräver att team utvecklar tydliga specifikationer, förbättrar mjukvarudesign genom feldokumentation och ger support för mjukvaruunderhåll.
Enhetstestning är inte den enda mjukvarutestmetoden du bör använda i din utvecklingslivscykel, det är bara ett mycket bra ställe att börja.