Gerai parašytame testų rinkinyje bus keli tam tikros funkcijos testai. Grupuodami susijusias savybes galite išreikšti ryšį tarp kelių testų grupių. Vienas iš pagrindinių vienetų testavimo klasių grupavimo pranašumų yra tai, kad tai gali sumažinti rašomo testo kodo kiekį, nes sugrupuoti testai dalijasi ištekliais.

JUnit 5 leidžia kurti įdėtus testus naudojant @Nested anotaciją. Šiame straipsnyje sužinosite, kas yra @Nested komentaras ir kaip jį naudoti.

Kas yra įdėtas testas?

JUnit @Nested anotacija rodo, kad klasė, su kuria ji susieta, yra vidinė klasė, kuri yra kitos klasės narys. Įdėtas testas yra bandymo klasė, kurioje yra @Nested anotacija, nes tai reiškia, kad aukščiausio lygio bandymo klasėje yra viena (ar daugiau) vidinė klasė. Įdėta klasė gali būti rodoma aukščiausio lygio klasėje arba klasėje, kuri taip pat yra įdėta.

Testuotinų Java klasių kūrimas

Įdėta bandomoji klasė paveldi visas pirminės klasės savybes. Todėl geriausias laikas sukurti įdėtą testą yra tada, kai yra loginė bandymų atvejų grupė arba kai vienas bandomasis atvejis turi skirtingas funkcijas. Puikus to pavyzdys yra tada, kai norite patikrinti klasės gebėjimą kurti naudingus objektus. Kitas pavyzdys, kai vienas metodas turi du ar daugiau tikslų.

instagram viewer

Štai pavyzdinė klasė, kurią galite naudoti mažmeninėje programoje, kuri parodo, kaip galite sukurti įdėtą testą.

viešasklasėKlientas{
apsaugotastarpt Kliento ID;
apsaugotas String customerName;
apsaugotas String customerCode;

// numatytasis konstruktorius
viešasKlientas(){
tai.customerId = 0;
tai.customerName = "";
tai.customerCode ="";
}

// pirminis konstruktorius
viešasKlientas(tarpt customerId, String customerName, String customerCode){
tai.customerId = kliento ID;
tai.customerName = klientoVardas;
tai.customerCode = kliento kodas;
}

// kopijavimo konstruktorius
viešasKlientas(Kliento klientas){
tai.customerId = customer.customerId;
tai.customerName = customer.customerName;
tai.customerCode = customer.customerCode;
}

// geteriai ir seteriai
viešastarptgetCustomerId(){
grąžinti Kliento ID;
}

viešastuštumasetCustomerId(tarpt Kliento ID){
tai.customerId = kliento ID;
}

viešas Styga getCustomerName(){
grąžinti Kliento vardas;
}

viešastuštumasetCustomerName(Eilutė customerName){
tai.customerName = klientoVardas;
}

viešas Styga gautiCustomerCode(){
grąžinti kliento kodas;
}

viešastuštumasetCustomerCode(Eilutė kliento kodas){
tai.customerCode = kliento kodas;
}

// nustatyti kliento nuolaidos procentą pagal kliento tipą
viešasdvigubaikliento tipas(Eilutė kliento kodas){
dvigubai nuolaida = 0;

jeigu (customerCode.toLowerCase().equals("pre")) {
nuolaida = 0.10;
} Kitasjeigu (customerCode.toLowerCase().equals("gen")) {
nuolaida = 0.02;
} Kitasjeigu (customerCode.toLowerCase().equals("naujas")) {
nuolaida = 0.05;
}

grąžinti nuolaida;
}

// pagal kliento tipą nustatykite kliento didžiąją sumą
viešasdvigubaiiš viso(dvigubai iš viso){
dvigubai nuolaida = customerType (customerCode);
dvigubai nuolaidaProcentai = bendra * nuolaida;
dvigubai finalTotal = iš viso – nuolaidaProcentas;
grąžinti final Total;
}
}

Šioje klientų klasėje yra visi „Java“ klasės komponentai su dviem metodais.

Įdėto testo sukūrimas naudojant JUnit 5

Klientų klasėje yra keli konstruktoriai, geteriai ir nustatytojai bei du metodai. Galite sukurti įdėtą klasę (kliento testo klasėje), kuri sukuria naują Kliento objektą ir išbando visus jo komponentus.

importuotistatinisorg.junitas.jupiteris.api.Tvirtinimai.*;

importuotiorg.junitas.jupiteris.api.Rodomas pavadinimas;
importuotiorg.junitas.jupiteris.api.Įdėtas;
importuotiorg.junitas.jupiteris.api.Išbandyk;

@DisplayName("Kliento bandymo klasė, rodanti, kaip SukurtiĮdėta Testai.")
klasėKliento testas{
apsaugotastarpt kliento ID = 301;
Protected String customerName = "Mike'as Wilsonas";
apsaugota eilutė customerCode = "Pre";
apsaugotasdvigubai iš viso = 600;

@Nested
@Rodomas pavadinimas("„Customer Builder“ įdėta bandomoji klasė aukščiausio lygio bandymo klasėje")
klasėCustomerBuilderTest{
Klientas klientas = naujas Klientas (customerId, customerName, customerCode);
dvigubai grandTotal = customer.grandTotal (iš viso);

@Test
@Rodomas pavadinimas("Kliento testavimas's klasių konstruktoriai, geteriai ir seteriai bei metodai.")
tuštumaklientasBuilder(){
assertAll(() -> {
AsertEquals(Kliento ID, klientas.getCustomerId());
AsertEquals(Kliento vardas, klientas.getCustomerName());
AsertEquals(kliento kodas, klientas.getCustomerCode());
AsertEquals(0.10, klientas.customerType(kliento kodas));
assertEquals (540, grandTotal);
});
}
}
}

„CustomerTest“ klasė yra aukščiausio lygio bandymo klasė į įdėtą „CustomerBuilderTest“ klasę. CustomerBuilderTest sukuria naują Kliento objektą ir išbando jo komponentus naudodamas tvirtinimo testai.

Vykdant „CustomerTest“ testo klasę gaunami tokie sėkmingi bandymo rezultatai:

Testo klasių pavadinimai ir bandymo metodas yra aprašomieji ir išsamūs, nes @DisplayName komentaras.

Labai svarbu žinoti, kaip išbandyti programinę įrangą

Technologijos daugeliui žmonių yra svarbus kasdienio gyvenimo aspektas. Statymas kuriant programinę įrangą, kuri daro būtent tai, ką turėtų daryti, niekada nebuvo didesnė.

Savaeigis automobilis, neteisingai apskaičiavęs savo artumą prie kito objekto, gali sukelti didelę avariją. Todėl turite išbandyti savo programą kiekviename jos kūrimo etape.