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.