Dobro napisan paket testov bo vseboval več testov za določeno funkcijo. Z združevanjem povezanih funkcij lahko izrazite razmerje med več skupinami testov. Ena od glavnih prednosti združevanja testnih razredov enote je, da lahko zmanjša količino testne kode, ki jo napišete, saj si združeni testi delijo vire.

JUnit 5 vam omogoča ustvarjanje ugnezdenih testov z uporabo oznake @Nested. V tem članku boste izvedeli, kaj je pripis @Nested in kako ga uporabljati.

Kaj je ugnezdeni test?

Opomba JUnit @Nested sporoča, da je razred, s katerim je povezan, notranji razred, ki je član drugega razreda. Ugnezdeni test je testni razred, ki vsebuje opombo @Nested, saj to pomeni, da obstaja en (ali več) notranji razred znotraj testnega razreda najvišje ravni. Ugnezdeni razred se lahko pojavi znotraj razreda najvišje ravni ali znotraj razreda, ki je prav tako ugnezden.

Ustvarjanje razredov Java za testiranje

Ugnezdeni testni razred podeduje vse lastnosti svojega nadrejenega razreda. Zato je najboljši čas za ustvarjanje ugnezdenega testa takrat, ko obstaja logično združevanje testnih primerov ali ko ima en sam testni primer različne funkcije. Dober primer tega je, ko želite preizkusiti sposobnost razreda za ustvarjanje uporabnih predmetov. Drug primer je, ko ima ena metoda dva ali več namenov.

instagram viewer

Tukaj je primer razreda, ki ga lahko uporabite v maloprodajni aplikaciji in prikazuje, kako lahko ustvarite ugnezdeni test.

javnostirazredStranka{
zaščitenint identifikacijska številka stranke;
zaščiten String customerName;
zaščiten String customerCode;

// privzeti konstruktor
javnostiStranka(){
to.customerId = 0;
to.customerName = "";
to.customerCode = "";
}

// primarni konstruktor
javnostiStranka(int customerId, String customerName, String customerCode){
to.customerId = customerId;
to.customerName = customerName;
to.customerCode = customerCode;
}

// kopiraj konstruktor
javnostiStranka(Stranka stranka){
to.customerId = customer.customerId;
to.customerName = customer.customerName;
to.customerCode = customer.customerCode;
}

// pridobivalci in nastavljalci
javnostiintgetCustomerId(){
vrnitev identifikacijska številka stranke;
}

javnostiprazninasetCustomerId(int identifikacijska številka stranke){
to.customerId = customerId;
}

javnosti Vrvica getCustomerName(){
vrnitev Ime stranke;
}

javnostiprazninasetCustomerName(Niz customerName){
to.customerName = customerName;
}

javnosti Vrvica getCustomerCode(){
vrnitev customerCode;
}

javnostiprazninasetCustomerCode(String customerCode){
to.customerCode = customerCode;
}

// določite odstotek popusta stranke glede na vrsto stranke
javnostidvojnocustomerType(String customerCode){
dvojno popust = 0;

če (customerCode.toLowerCase().equals("pre")) {
popust = 0.10;
} drugačeče (customerCode.toLowerCase().equals("gen")) {
popust = 0.02;
} drugačeče (customerCode.toLowerCase().equals("novo")) {
popust = 0.05;
}

vrnitev popust;
}

// določi strankin grandTotal glede na vrsto stranke
javnostidvojnoskupna vsota(dvojno skupaj){
dvojno popust = CustomerType (customerCode);
dvojno discountPercentage = skupni * popust;
dvojno finalTotal = skupno - odstotek popusta;
vrnitev finalTotal;
}
}

Ta razred stranke vsebuje vse komponente razreda Java, skupaj z dvema metodama.

Ustvarjanje ugnezdenega testa z JUnit 5

Razred Customer ima več konstruktorjev, pridobivalnikov in nastavljalcev ter dve metodi. Ustvarite lahko ugnezdeni razred (znotraj preskusnega razreda Customer), ki ustvari nov objekt Customer in preizkusi vse njegove komponente.

uvozstatičnaorg.junit.jupiter.api.Trditve.*;

uvozorg.junit.jupiter.api.DisplayName;
uvozorg.junit.jupiter.api.Ugnezdeno;
uvozorg.junit.jupiter.api.Test;

@DisplayName("Testni razred stranke, ki prikazuje, kako UstvariUgnezdeno Testi.")
razredCustomerTest{
zaščitenint customerId = 301;
protected String customerName = "Mike Wilson";
protected String customerCode = "Prej";
zaščitendvojno skupaj = 600;

@Ugnezdeno
@DisplayName("Ugnezdeni testni razred Customer Builder znotraj testnega razreda najvišje ravni")
razredCustomerBuilderTest{
Stranka stranka = novo Stranka (Id stranke, Ime stranke, Koda stranke);
dvojno grandTotal = customer.grandTotal (skupaj);

@Test
@DisplayName("Testiranje stranke's Konstruktorji razredov, pridobivalci in nastavljalci ter metode.")
prazninacustomerBuilder(){
assertAll(() -> {
assertEquals(identifikacijska številka stranke, stranka.getCustomerId());
assertEquals(Ime stranke, stranka.getCustomerName());
assertEquals(customerCode, stranka.getCustomerCode());
assertEquals(0.10, stranka.customerType(customerCode));
assertEquals (540, grandTotal);
});
}
}
}

Razred CustomerTest je testni razred najvišje ravni za ugnezdeni razred CustomerBuilderTest. CustomerBuilderTest ustvari nov objekt Customer in preizkusi njegove komponente z uporabo trditveni testi.

Izvajanje testnega razreda CustomerTest daje naslednje uspešne rezultate testa:

Imena testnih razredov in testne metode so opisni in izčrpni, zahvaljujoč Opomba @DisplayName.

Ključnega pomena je znanje o testiranju programske opreme

Tehnologija je za večino ljudi pomemben vidik vsakdanjega življenja. Vložki pri ustvarjanju programske opreme, ki dela točno to, kar naj bi delala, še nikoli niso bili višji.

Samovozeči avto, ki napačno izračuna svojo bližino drugega predmeta, lahko povzroči veliko nesrečo. Zato morate svojo aplikacijo testirati na vsaki stopnji njenega razvoja.