Vyhlásenia o jarnom potvrdení

1. Prehľad

V tomto tutoriáli sa zameriame a popíšeme účel jari Tvrdiť triedy a predviesť, ako ju používať.

2. Účel Tvrdiť Trieda

Pružina Tvrdiť trieda nám pomáha overiť argumenty. Použitím metód z Tvrdiť triedy, môžeme napísať predpoklady, o ktorých si myslíme, že sú pravdivé. A ak nie sú splnené, vyvolá sa runtime výnimka.

Každý TvrdiťMetóda sa dá porovnať s Java tvrdiť vyhlásenie. Java tvrdiť vyhlásenie hodí Chyba za behu, ak zlyhá jeho stav. Zaujímavosťou je, že tieto tvrdenia je možné deaktivovať.

Tu je niekoľko charakteristík jari TvrdiťMetódy:

  • TvrdiťMetódy sú statické
  • Hodia buď IllegalArgumentException alebo IllegalStateException
  • Prvý parameter je zvyčajne argument na overenie alebo logická podmienka na kontrolu
  • Posledným parametrom je zvyčajne správa o výnimke, ktorá sa zobrazí, ak sa overenie nepodarí
  • Správu je možné odovzdať buď ako a String parameter alebo ako a Dodávateľ parameter

Upozorňujeme tiež, že napriek podobnému názvu nemajú jarné tvrdenia nič spoločné s tvrdeniami JUnit a iných testovacích rámcov. Jarné tvrdenia nie sú na testovanie, ale na ladenie.

3. Príklad použitia

Definujme a Auto triedy verejnou metódou jazda ():

public class Car {private String state = "stop"; public void drive (int speed) {Assert.isTrue (rýchlosť> 0, „rýchlosť musí byť kladná“); this.state = "disk"; // ...}}

Vidíme, ako rýchlosť musí byť kladné číslo. Vyššie uvedený riadok predstavuje krátku cestu na kontrolu stavu a vyvolanie výnimky, ak stav zlyhá:

if (! (rýchlosť> 0)) {hodiť novú IllegalArgumentException ("rýchlosť musí byť kladná"); }

Každý TvrdiťVerejná metóda obsahuje zhruba tento kód - podmienený blok s runtime výnimkou, z ktorej sa neočakáva zotavenie aplikácie.

Ak sa pokúsime dovolať jazda () metóda so záporným argumentom, an IllegalArgumentException bude vyvolaná výnimka:

Výnimka vo vlákne „main“ java.lang.IllegalArgumentException: rýchlosť musí byť kladná

4. Logické tvrdenia

4.1. je pravda()

Toto tvrdenie bolo diskutované vyššie. Prijíma a boolovský stav a hodí an IllegalArgumentException keď je podmienka nepravdivá.

4.2. štát()

The štát() metóda má rovnaký podpis ako je pravda() ale hodí IllegalStateException.

Ako už názov napovedá, mal by sa použiť, keď v metóde nesmie pokračovať kvôli nelegálnemu stavu objektu.

Predstavte si, že nemôžeme volať palivo () metóda, ak je auto v prevádzke. Použime štát() tvrdenie v tomto prípade:

public void fuel () {Assert.state (this.state.equals ("stop"), "auto musí byť zastavené"); // ...}

Samozrejme, všetko môžeme overiť pomocou logických tvrdení. Pre lepšiu čitateľnosť však môžeme použiť ďalšie tvrdenia, vďaka ktorým je náš kód expresívnejší.

5. Assertio objektu a typuns

5.1. notNull ()

Môžeme predpokladať, že objekt nie je nulový pomocou notNull () metóda:

public void сhangeOil (reťazcový olej) {Assert.notNull (olej, „olej nesmie byť null“); // ...}

5.2. isNull ()

Na druhej strane môžeme skontrolovať, či nejaký predmet je nulový pomocou isNull () metóda:

public void replaceBattery (CarBattery carBattery) {Assert.isNull (carBattery.getCharge (), "pri výmene batérie musí byť nabitie nulové"); // ...}

5.3. isInstanceOf ()

Na kontrolu, či je objekt inštanciou iného objektu konkrétneho typu, môžeme použiť znak isInstanceOf () metóda:

public void сhangeEngine (motor motora) {Assert.isInstanceOf (ToyotaEngine.class, motor); // ...}

V našom príklade kontrola úspešne prešla ako ToyotaEngine je podtrieda Motor.

5.4. isAssignable ()

Na kontrolu typov môžeme použiť Assert.isAssignable ():

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

Dve nedávne tvrdenia predstavujú je-a vzťah.

6. Textové tvrdenia

Na vykonanie kontroly sa používajú textové tvrdenia String argumenty.

6.1. hasLength ()

Môžeme skontrolovať, či a String nie je prázdny, čo znamená, že obsahuje najmenej jeden prázdny priestor pomocou znaku hasLength () metóda:

public void startWithHasLength (reťazcový kľúč) {Assert.hasLength (kľúč, „kľúč nesmie mať hodnotu null a nesmie byť prázdny“); // ...}

6.2. hasText ()

Môžeme posilniť stav a skontrolovať, či a String obsahuje najmenej jeden znak, ktorý nie je prázdny, pomocou znaku hasText () metóda:

public void startWithHasText (reťazcový kľúč) {Assert.hasText (kľúč, „kľúč nesmie mať hodnotu null a musí obsahovať aspoň jeden znak bez medzier“); // ...}

6.3. neobsahuje()

Môžeme určiť, či a String argument neobsahuje konkrétny podreťazec pomocou znaku neobsahuje() metóda:

public void startWithNotContain (reťazcový kľúč) {Assert.doesNotContain (kľúč, „123“, „kľúč nesmie obsahovať 123“); // ...}

7. Zbierka a výroky na mape

7.1. nie prázdny() pre zbierky

Ako hovorí názov, nie prázdny() metóda tvrdí, že kolekcia nie je prázdna, to znamená, že nie je nulový a obsahuje najmenej jeden prvok:

public void repair (Collection repairParts) {Assert.notEmpty (repairParts, „zbierka repairParts nesmie byť prázdna“); // ...}

7.2. nie prázdny() pre Mapy

Rovnaká metóda je preťažená pre mapy a môžeme skontrolovať, či mapa nie je prázdna a obsahuje aspoň jednu položku:

public void repair (Map repairParts) {Assert.notEmpty (repairParts, „mapa repairParts nesmie byť prázdna“); // ...}

8. Tvrdenia poľa

8.1. nie prázdny() pre polia

Nakoniec môžeme skontrolovať, či pole nie je prázdne a obsahuje aspoň jeden prvok pomocou znaku nie prázdny() metóda:

public void repair (String [] repairParts) {Assert.notEmpty (repairParts, "pole repairParts nesmie byť prázdne"); // ...}

8.2. noNullElements ()

Môžeme overiť, či pole neobsahuje nulový prvkov pomocou noNullElements () metóda:

public void repairWithNoNull (String [] repairParts) {Assert.noNullElements (repairParts, "pole repairParts nesmie obsahovať nulové prvky"); // ...}

Upozorňujeme, že táto kontrola stále prebieha, ak je pole prázdne, pokiaľ neexistujú žiadne nulový prvky v ňom.

9. Záver

V tomto článku sme preskúmali Tvrdiť trieda. Táto trieda je široko používaná v rámci Spring, ale mohli by sme ľahko napísať robustnejší a expresívnejší kód, ktorý by to využil.

Kompletný kód tohto článku nájdete ako vždy v projekte GitHub.


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