Labi uzrakstītā testu komplektā būs vairākas konkrētas funkcijas pārbaudes. Grupējot saistītās funkcijas, varat izteikt attiecības starp vairākām testu grupām. Viena no galvenajām vienību pārbaudes klašu grupēšanas priekšrocībām ir tā, ka tā var samazināt rakstītā testa koda daudzumu, jo grupētie testi koplieto resursus.

JUnit 5 ļauj izveidot ligzdotus testus, izmantojot @Nested anotāciju. Šajā rakstā jūs uzzināsit, kas ir @Nested anotācija un kā to izmantot.

Kas ir ligzdots tests?

JUnit anotācija @Nested norāda, ka klase, ar kuru tā ir saistīta, ir iekšējā klase, kas ir citas klases dalībnieks. Ligzdots tests ir testa klase, kurā ir @Nested anotācija, jo tas nozīmē, ka augstākā līmeņa testa klasē ir viena (vai vairākas) iekšējās klases. Ligzdota klase var parādīties augstākā līmeņa klasē vai klasē, kas arī ir ligzdota.

Pārbaudāmo Java klašu izveide

Ligzdota testa klase pārmanto visas savas vecākklases funkcijas. Tāpēc vislabākais laiks ligzdotā testa izveidei ir tad, ja ir loģiska testa gadījumu grupēšana vai kad vienam testa gadījumam ir dažādas funkcijas. Labs piemērs tam ir, ja vēlaties pārbaudīt klases spēju izveidot noderīgus objektus. Vēl viens piemērs ir, ja vienai metodei ir divi vai vairāki mērķi.

instagram viewer

Tālāk ir sniegts klases piemērs, ko varat izmantot mazumtirdzniecības lietojumprogrammā, un tas parāda, kā izveidot ligzdotu testu.

publiskiklasēKlients{
aizsargātsstarpt klienta ID;
aizsargāts String customerName;
aizsargāts String customerCode;

// noklusējuma konstruktors
publiskiKlients(){
šis.customerId = 0;
šis.customerName = "";
šis.customerCode ="";
}

// primārais konstruktors
publiskiKlients(starpt klienta ID, virkne customerName, virknes klienta kods){
šis.customerId = klienta ID;
šis.customerName = klientaVārds;
šis.customerCode = klienta kods;
}

// kopiju konstruktors
publiskiKlients(Klientu klients){
šis.customerId = customer.customerId;
šis.customerName = customer.customerName;
šis.customerCode = customer.customerCode;
}

// ieguvēji un noteicēji
publiskistarptgetCustomerId(){
atgriezties klienta ID;
}

publiskinederīgssetCustomerId(starpt klienta ID){
šis.customerId = klienta ID;
}

publiski Stīga getCustomerName(){
atgriezties Klienta vārds;
}

publiskinederīgssetCustomerName(virkne customerName){
šis.customerName = klientaVārds;
}

publiski Stīga getCustomerCode(){
atgriezties klienta kods;
}

publiskinederīgssetCustomerCode(virkne klienta kods){
šis.customerCode = klienta kods;
}

// nosaka klienta atlaides procentuālo daļu, pamatojoties uz klienta veidu
publiskidubultāklienta tips(virkne klienta kods){
dubultā atlaide = 0;

ja (customerCode.toLowerCase().equals("pre")) {
atlaide = 0.10;
} citsja (customerCode.toLowerCase().equals("gen")) {
atlaide = 0.02;
} citsja (customerCode.toLowerCase().equals("jauns")) {
atlaide = 0.05;
}

atgriezties atlaide;
}

// nosaka klienta kopējo summu, pamatojoties uz klienta veidu
publiskidubultākopsumma(dubultā Kopā){
dubultā atlaide = customerType (customerCode);
dubultā atlaideProcenti = kopējā * atlaide;
dubultā finalTotal = kopā - atlaidePercentage;
atgriezties galīgaisKopā;
}
}

Šī Klientu klase satur visus Java klases komponentus ar divām metodēm.

Nested testa izveide, izmantojot JUnit 5

Klientu klasei ir vairāki konstruktori, ieguvēji un iestatītāji, kā arī divas metodes. Varat izveidot ligzdotu klasi (klienta pārbaudes klasē), kas izveido jaunu Klienta objektu un pārbauda visus tā komponentus.

importsstatisksorg.junit.jupiters.api.Apgalvojumi.*;

importsorg.junit.jupiters.api.Displeja nosaukums;
importsorg.junit.jupiters.api.Ligzdotas;
importsorg.junit.jupiters.api.Pārbaude;

@DisplayName("Klienta pārbaudes klase, kurā parādīts, kā IzveidotLigzdotas Pārbaudes.")
klasēKlientu tests{
aizsargātsstarpt klienta ID = 301;
Protected String customerName = "Maiks Vilsons";
Protected String customerCode = "Iepriekš";
aizsargātsdubultā kopā = 600;

@Nested
@DisplayName("Klientu veidotāja ligzdotā testa klase augstākā līmeņa pārbaudes klasē")
klasēCustomerBuilderTest{
Klientu klients = jauns Klients (customerId, customerName, customerCode);
dubultā grandTotal = klients.grandTotal (kopā);

@Pārbaude
@DisplayName("Klienta pārbaude's Klases konstruktori, Getteri un Seteri, un Metodes.")
nederīgscustomerBuilder(){
AssertAll(() -> {
apgalvotEquals(klienta ID, klientu.getCustomerId());
apgalvotEquals(Klienta vārds, klientu.getCustomerName());
apgalvotEquals(klienta kods, klientu.getCustomerCode());
apgalvotEquals(0.10, klientu.customerType(klienta kods));
assertEquals (540, grandTotal);
});
}
}
}

CustomerTest klase ir augstākā līmeņa pārbaudes klase ligzdotai CustomerBuilderTest klasei. CustomerBuilderTest izveido jaunu klienta objektu un testē tā komponentus, izmantojot apgalvojumu testi.

Izpildot CustomerTest testa klasi, tiek iegūti šādi veiksmīgi testa rezultāti:

Pārbaudes klašu nosaukumi un pārbaudes metode ir aprakstoši un visaptveroši, pateicoties @DisplayName Anotācija.

Ir ļoti svarīgi zināt, kā pārbaudīt programmatūru

Tehnoloģijas lielākajai daļai cilvēku ir svarīgs ikdienas dzīves aspekts. Likmes, lai radītu programmatūru, kas dara tieši to, ko tai vajadzētu darīt, nekad nav bijušas augstākas.

Pašbraucoša automašīna, kas nepareizi aprēķina savu tuvumu citam objektam, var izraisīt smagu avāriju. Tāpēc jums ir jāpārbauda jūsu lietojumprogramma katrā tās izstrādes posmā.