Izvještaji o proljetnom potvrđivanju

1. Pregled

U ovom uputstvu usredotočit ćemo se na i opisati svrhu proljeća Tvrditi predavanja i pokazati kako se njime koristiti.

2. Svrha Tvrditi Razred

Proljeće Tvrditi klasa nam pomaže da potvrdimo argumente. Korištenjem metoda Tvrditi razreda, možemo napisati pretpostavke za koje očekujemo da su istinite. A ako se ne ispune, izbacuje se izuzetak tijekom izvođenja.

Svaki TvrditiMetoda se može usporediti s Javom tvrditi izjava. Java tvrditi izjava baca Pogreška tijekom izvođenja ako njegovo stanje zakaže. Zanimljiva je činjenica da se te tvrdnje mogu onemogućiti.

Evo nekoliko karakteristika proljeća TvrditiMetode:

  • TvrditiMetode su statične
  • Bacaju bilo IlegalArgumentException ili IllegalStateException
  • Prvi je parametar obično argument za provjeru valjanosti ili logički uvjet za provjeru
  • Posljednji je parametar obično poruka o iznimci koja se prikazuje ako provjera valjanosti ne uspije
  • Poruka se može proslijediti bilo kao Niz parametar ili kao a Dobavljač parametar

Također imajte na umu da unatoč sličnom nazivu, proljetne tvrdnje nemaju ništa zajedničko s tvrdnjama JUnit-a i drugih okvira za testiranje. Proljetne tvrdnje nisu za testiranje, već za otklanjanje pogrešaka.

3. Primjer upotrebe

Definirajmo a Automobil razred s javnom metodom voziti():

javni razred automobila {private String state = "stop"; javni void disk (int brzina) {Assert.isTrue (brzina> 0, "brzina mora biti pozitivna"); this.state = "pogon"; // ...}}

Možemo vidjeti kako brzina mora biti pozitivan broj. Gornji je redak kratak način da provjerite stanje i izbacite iznimku ako stanje ne uspije:

if (! (speed> 0)) {throw new IllegalArgumentException ("brzina mora biti pozitivna"); }

Svaki TvrditiJavna metoda sadrži otprilike ovaj kôd - uvjetni blok s izuzećem tijekom izvođenja od kojeg se ne očekuje oporavak aplikacije.

Ako pokušamo nazvati voziti() metoda s negativnim argumentom, an IlegalArgumentException Iznimka će biti izbačena:

Iznimka u niti "main" java.lang.IllegalArgumentException: brzina mora biti pozitivna

4. Logičke tvrdnje

4.1. je istina()

O ovoj se tvrdnji govorilo gore. Prihvaća a boolean stanje i baca an IlegalArgumentException kad je stanje lažno.

4.2. država()

The država() metoda ima isti potpis kao je istina() ali baca IllegalStateException.

Kao što i samo ime govori, trebalo bi ga koristiti kada se metoda ne smije nastaviti zbog ilegalnog stanja predmeta.

Zamislite da ne možemo nazvati gorivo() metoda ako automobil radi. Iskoristimo država() tvrdnja u ovom slučaju:

javno prazno gorivo () {Assert.state (this.state.equals ("stop"), "auto mora biti zaustavljen"); // ...}

Naravno, sve možemo provjeriti valjanošću logičkih tvrdnji. Ali za bolju čitljivost možemo koristiti dodatne tvrdnje koje naš kod čine izražajnijim.

5. Assertio objekta i tipans

5.1. notNull ()

Možemo pretpostaviti da objekt nije null pomoću notNull () metoda:

javna praznina changeOil (ulje u nizu) {Assert.notNull (ulje, "ulje ne smije biti null"); // ...}

5.2. isNull ()

S druge strane, možemo provjeriti je li objekt null koristiti isNull () metoda:

javna praznina replaceBattery (CarBattery carBattery) {Assert.isNull (carBattery.getCharge (), "za zamjenu baterije napunjenost mora biti prazna"); // ...}

5.3. isInstanceOf ()

Da bismo provjerili je li objekt primjer drugog objekta određene vrste, možemo koristiti isInstanceOf () metoda:

javna praznina changeEngine (motor motora) {Assert.isInstanceOf (ToyotaEngine.class, motor); // ...}

U našem primjeru provjera uspješno prolazi kao ToyotaEngine je podrazred od Motor.

5.4. isAsanable ()

Da bismo provjerili vrste, možemo koristiti Assert.isAssignable ():

public void repairEngine (motor motora) {Assert.isAssignable (Engine.class, ToyotaEngine.class); // ...}

Dvije nedavne tvrdnje predstavljaju je odnos.

6. Tekstne tvrdnje

Tekstne se tvrdnje koriste za provjeru Niz argumenti.

6.1. hasLength ()

Možemo provjeriti je li Niz nije prazno, što znači da sadrži barem jedan razmak, koristeći hasLength () metoda:

public void startWithHasLength (String key) {Assert.hasLength (key, "ključ ne smije biti nula i ne smije biti prazan"); // ...}

6.2. hasText ()

Možemo ojačati stanje i provjeriti je li a Niz sadrži barem jedan znak koji nije razmak, pomoću znaka hasText () metoda:

javna void startWithHasText (ključ niza) {Assert.hasText (ključ, "ključ ne smije biti nula i mora sadržavati barem jedan znak koji nije razmak"); // ...}

6.3. ne sadrži()

Možemo utvrditi je li a Niz argument ne sadrži određeni podniz pomoću ne sadrži () metoda:

javna void startWithNotContain (ključ niza) {Assert.doesNotContain (ključ, "123", "ključ ne smije sadržavati 123"); // ...}

7. Tvrdnje o zbirkama i kartama

7.1. nije prazno() za Zbirke

Kao što i samo ime kaže, nije prazno() metoda tvrdi da zbirka nije prazna, što znači da nije null i sadrži barem jedan element:

popravak javne praznine (Collection repairParts) {Assert.notEmpty (repairParts, "zbirka repairParts ne smije biti prazna"); // ...}

7.2. nije prazno() za Karte

Ista je metoda preopterećena za karte i možemo provjeriti je li karta prazna i sadrži li barem jedan unos:

popravak javne praznine (Map repairParts) {Assert.notEmpty (repairParts, "karta repairParts ne smije biti prazna"); // ...}

8. Tvrdnje niza

8.1. nije prazno() za Arrays

Konačno, možemo provjeriti je li niz prazan i sadrži li barem jedan element pomoću nije prazno() metoda:

popravak javne praznine (String [] repairParts) {Assert.notEmpty (repairParts, "niz repairParts ne smije biti prazan"); // ...}

8.2. noNullElements ()

Možemo provjeriti da niz ne sadrži null elementi pomoću noNullElements () metoda:

public void repairWithNoNull (String [] repairParts) {Assert.noNullElements (repairParts, "niz repairParts ne smije sadržavati null elemente"); // ...}

Imajte na umu da ova provjera i dalje prolazi ako je niz prazan, sve dok ih nema null elementi u njemu.

9. Zaključak

U ovom smo članku istražili Tvrditi razred. Ova se klasa široko koristi u okviru Spring, ali lako bismo mogli napisati robusniji i izražajniji kôd koristeći je.

Kao i uvijek, cjeloviti kôd za ovaj članak nalazi se u projektu GitHub.


$config[zx-auto] not found$config[zx-overlay] not found