Tavaszi állítások

1. Áttekintés

Ebben az oktatóanyagban a Tavasz céljára összpontosítunk és leírjuk Állítsd osztály és mutassa be, hogyan kell használni.

2. A cél Állítsd Osztály

A tavasz Állítsd osztály segít az érvek érvényesítésében. A Állítsd osztályban feltételezéseket írhatunk, amelyek igaznak számítanak. Ha pedig nem teljesülnek, futásidejű kivételt dobnak.

Minden egyes ÁllítsdMódszere összehasonlítható a Java-val állítják nyilatkozat. Jáva állítják állítás dob egy Hiba futás közben, ha állapota nem sikerül. Érdekes tény, hogy ezek az állítások kikapcsolhatók.

Íme néhány jellemző a Tavaszra ÁllítsdMódszerei:

  • ÁllítsdMódszerei statikusak
  • Ők is dobnak IllegalArgumentException vagy IllegalStateException
  • Az első paraméter általában egy érv az érvényesítéshez vagy az ellenőrzendő logikai feltétel
  • Az utolsó paraméter általában kivételes üzenet, amely akkor jelenik meg, ha az érvényesítés sikertelen
  • Az üzenet továbbítható a-ként is Húr paraméterként vagy a Támogató paraméter

Vegye figyelembe azt is, hogy a hasonló név ellenére a Spring állításoknak nincs semmi közös vonásuk a JUnit és más tesztelési keretrendszer állításaihoz. A tavaszi állítások nem tesztelésre, hanem hibakeresésre szolgálnak.

3. Példa a felhasználásra

Határozzuk meg a Autó osztály nyilvános módszerrel hajtás():

public class Car {private String state = "stop"; public void drive (int sebesség) {Assert.isTrue (sebesség> 0, "a sebességnek pozitívnak kell lennie"); this.state = "meghajtó"; // ...}}

Láthatjuk, hogy a sebességnek pozitív számnak kell-e lennie. A fenti sor egy rövid módja annak, hogy ellenőrizze az állapotot és kivételt hajtson végre, ha a feltétel nem sikerül:

if (! (sebesség> 0)) {dobjon új IllegalArgumentException-t ("a sebességnek pozitívnak kell lennie"); }

Minden egyes ÁllítsdNyilvános módszere nagyjából ezt a kódot tartalmazza - egy feltételes blokk futásidejű kivétellel, amelytől az alkalmazás várhatóan nem áll helyre.

Ha megpróbáljuk felhívni a hajtás() módszer negatív érvvel, an IllegalArgumentException kivétel lesz dobva:

Kivétel a "main" szálban java.lang.IllegalArgumentException: a sebességnek pozitívnak kell lennie

4. Logikai állítások

4.1. igaz()

Ezt az állítást fentebb tárgyaltuk. Elfogadja a logikai állapotot és dob egy IllegalArgumentException amikor a feltétel hamis.

4.2. állapot()

A állapot() metódusnak ugyanaz az aláírása, mint a igaz() de dobja a IllegalStateException.

Ahogy a neve is sugallja, akkor kell használni, ha a módszert nem szabad folytatni az objektum illegális állapota miatt.

Képzelje el, hogy nem hívhatjuk a üzemanyag() módszer, ha az autó jár. Használjuk a állapot() állítás ebben az esetben:

public void fuel () {Assert.state (this.state.equals ("stop"), "az autót le kell állítani"); // ...}

Természetesen mindent érvényesíthetünk logikai állítások segítségével. De a jobb olvashatóság érdekében további állításokat használhatunk, amelyek kifejezőbbé teszik kódunkat.

5. Objektum és típus Assertions

5.1. nem nulla()

Feltételezhetjük, hogy egy tárgy nem az nulla a nem nulla() módszer:

public void сhangeOil (Húrolaj) {Assert.notNull (olaj, "az olaj nem lehet null"); // ...}

5.2. nulla()

Másrészt ellenőrizhetjük, hogy egy objektum az nulla használni a nulla() módszer:

public void ReplaceBattery (CarBattery carBattery) {Assert.isNull (carBattery.getCharge (), "az akkumulátor cseréjéhez a töltés nullának kell lennie"); // ...}

5.3. isInstanceOf ()

Annak ellenőrzésére, hogy egy objektum egy adott típusú objektum egy másik példánya, használhatjuk-e isInstanceOf () módszer:

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

Példánkban az ellenőrzés sikeresen áthalad ToyotaEngine alosztálya Motor.

5.4. isAssignable ()

A típusok ellenőrzéséhez használhatjuk Assert.isAssignable ():

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

Két közelmúltbeli állítás egy egy kapcsolat.

6. Szöveges állítások

A szöveges állítások az ellenőrzések végrehajtására szolgálnak Húr érvek.

6.1. hasLength ()

Ellenőrizhetjük, hogy a Húr nem üres, vagyis legalább egy szóközt tartalmaz, a hasLength () módszer:

public void startWithHasLength (String kulcs) {Assert.hasLength (kulcs, "a kulcs nem lehet null és nem lehet üres"); // ...}

6.2. hasText ()

Megerősíthetjük az állapotot és ellenőrizhetjük, hogy a Húr legalább egy nem szóköz karaktert tartalmaz, a hasText () módszer:

public void startWithHasText (karakterlánc-kulcs) {Assert.hasText (kulcs, "a kulcs nem lehet null, és tartalmaznia kell legalább egy nem szóköz nélküli karaktert"); // ...}

6.3. nem tartalmaz()

Megállapíthatjuk, hogy a Húr argumentum nem tartalmaz konkrét alszöveget a nem tartalmaz() módszer:

public void startWithNotContain (String kulcs) {Assert.doesNotContain (kulcs, "123", "kulcs nem tartalmazhat 123" -t); // ...}

7. Gyűjtési és térképi állítások

7.1. nem üres() gyűjtemények számára

Ahogy a neve is mondja, a nem üres() A módszer azt állítja, hogy a gyűjtemény nem üres, vagyis nem az nulla és legalább egy elemet tartalmaz:

public void repair (Collection repairParts) {Assert.notEmpty (repairParts, "a repairParts gyűjteménye nem lehet üres"); // ...}

7.2. nem üres() a Maps-hez

Ugyanez a módszer túlterhelt a térképek esetében, és ellenőrizhetjük, hogy egy térkép nem üres-e és tartalmaz-e legalább egy bejegyzést:

public void repair (Map repairParts) {Assert.notEmpty (repairParts, "a repairParts térkép nem lehet üres"); // ...}

8. Tömb állítások

8.1. nem üres() tömbökhöz

Végül a. Használatával ellenőrizhetjük, hogy egy tömb nem üres-e és tartalmaz-e legalább egy elemet nem üres() módszer:

public void repair (String [] repairParts) {Assert.notEmpty (repairParts, "a repairParts tömb nem lehet üres"); // ...}

8.2. noNullElements ()

Ellenőrizhetjük, hogy egy tömb nem tartalmaz-e nulla elemeket a noNullElements () módszer:

public void repairWithNoNull (String [] repairParts) {Assert.noNullElements (repairParts, "a repairParts tömb nem tartalmazhat null elemet"); // ...}

Vegye figyelembe, hogy ez az ellenőrzés akkor is átmegy, ha a tömb üres, mindaddig, amíg nincs nulla elemek benne.

9. Következtetés

Ebben a cikkben feltártuk a Állítsd osztály. Ezt az osztályt széles körben használják a tavaszi keretrendszerben, de könnyen használhatunk robusztusabb és kifejezőbb kódot, kihasználva azt.

Mint mindig, a cikk teljes kódja megtalálható a GitHub projektben.