Spring Assert Statements

1. Oversigt

I denne vejledning fokuserer vi på og beskriver formålet med foråret Hævde klasse og demonstrere, hvordan du bruger det.

2. Formålet med Hævde Klasse

Foråret Hævde klasse hjælper os med at validere argumenter. Ved hjælp af metoder til Hævde klasse, kan vi skrive antagelser, som vi forventer at være sande. Og hvis de ikke er opfyldt, kastes en undtagelse af runtime.

Hver Hævde'S metode kan sammenlignes med Java hævde udmelding. Java hævde udsagn kaster en Fejl ved kørsel, hvis tilstanden mislykkes. Det interessante er, at disse påstande kan deaktiveres.

Her er nogle kendetegn ved foråret Hævde'S metoder:

  • HævdeMetoderne er statiske
  • De kaster enten IllegalArgumentException eller IllegalStateException
  • Den første parameter er normalt et argument for validering eller en logisk tilstand at kontrollere
  • Den sidste parameter er normalt en undtagelsesmeddelelse, der vises, hvis valideringen mislykkes
  • Beskeden kan sendes enten som en Snor parameter eller som en Leverandør parameter

Bemærk også, at på trods af det samme navn har Spring-påstande intet til fælles med påstandene fra JUnit og andre testrammer. Forårsangivelser er ikke til testning, men til debugging.

3. Eksempel på brug

Lad os definere en Bil klasse med en offentlig metode køre():

offentlig klasse bil {privat strengstat = "stop"; offentligt ugyldigt drev (int-hastighed) {Assert.isTrue (hastighed> 0, "hastighed skal være positiv"); this.state = "drive"; // ...}}

Vi kan se, hvordan hastighed skal være et positivt tal. Ovenstående række er en kort vej til at kontrollere tilstanden og kaste en undtagelse, hvis betingelsen mislykkes:

if (! (speed> 0)) {throw new IllegalArgumentException ("hastighed skal være positiv"); }

Hver Hævde'S offentlige metode indeholder omtrent denne kode - en betinget blok med en runtime-undtagelse, hvorfra applikationen ikke forventes at komme sig.

Hvis vi prøver at ringe til køre() metode med et negativt argument, en IllegalArgumentException undtagelse vil blive kastet:

Undtagelse i tråden "main" java.lang.IllegalArgumentException: hastighed skal være positiv

4. Logiske påstande

4.1. er sandt()

Denne påstand blev diskuteret ovenfor. Det accepterer en boolsk tilstand og kaster en IllegalArgumentException når betingelsen er falsk.

4.2. stat()

Det stat() metoden har den samme signatur som er sandt() men kaster IllegalStateException.

Som navnet antyder, skal det bruges, når metoden ikke må fortsættes på grund af en ulovlig tilstand af objektet.

Forestil dig, at vi ikke kan ringe til brændstof() metode, hvis bilen kører. Lad os bruge stat() påstand i dette tilfælde:

offentligt tomt brændstof () {Assert.state (this.state.equals ("stop"), "bil skal stoppes"); // ...}

Selvfølgelig kan vi validere alt ved hjælp af logiske påstande. Men for bedre læsbarhed kan vi bruge yderligere påstande, der gør vores kode mere udtryksfuld.

5. Objekt og type assertions

5.1. notNull ()

Vi kan antage, at et objekt ikke er det nul ved hjælp af notNull () metode:

public void сhangeOil (String oil) {Assert.notNull (olie, "olie må ikke være nul"); // ...}

5.2. isNull ()

På den anden side kan vi kontrollere, om et objekt er nul bruger isNull () metode:

public void replaceBattery (CarBattery carBattery) {Assert.isNull (carBattery.getCharge (), "for at udskifte batteriet skal opladningen være nul"); // ...}

5.3. isInstanceOf ()

For at kontrollere, om et objekt er en forekomst af et andet objekt af den specifikke type, kan vi bruge isInstanceOf () metode:

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

I vores eksempel passerer kontrollen med succes som ToyotaEngine er en underklasse af Motor.

5.4. isAssignable ()

For at kontrollere typer kan vi bruge Assert.isAssignable ():

offentlig ugyldig reparationEngine (Engine engine) {Assert.isAssignable (Engine.class, ToyotaEngine.class); // ...}

To nylige påstande repræsenterer en er en forhold.

6. Tekst påstande

Tekst påstande bruges til at udføre kontrol på Snor argumenter.

6.1. hasLength ()

Vi kan kontrollere, om en Snor er ikke tom, hvilket betyder at den indeholder mindst et hvidt mellemrum ved hjælp af hasLength () metode:

public void startWithHasLength (String key) {Assert.hasLength (key, "key must not be null and must not the tom"); // ...}

6.2. hasText ()

Vi kan styrke tilstanden og kontrollere, om en Snor indeholder mindst et tegn, der ikke er mellemrum, ved hjælp af hasText () metode:

public void startWithHasText (String key) {Assert.hasText (key, "key must not be null and must contain at mindst one non-whitespace character"); // ...}

6.3. indeholder ikke()

Vi kan afgøre, om en Snor argument indeholder ikke et specifikt underlag ved hjælp af indeholder ikke() metode:

offentlig ugyldig startWithNotContain (strengnøgle) {Assert.doesNotContain (nøgle, "123", "nøgle må ikke indeholde 123"); // ...}

7. Indsamling og kortbestemmelser

7.1. notEmpty () til samlinger

Som navnet siger, er notEmpty () metode hævder, at en samling ikke er tom, hvilket betyder, at den ikke er tom nul og indeholder mindst et element:

offentlig tomrumsreparation (Collection repairParts) {Assert.notEmpty (repairParts, "samling af repairParts må ikke være tom"); // ...}

7.2. notEmpty () til Maps

Den samme metode er overbelastet for kort, og vi kan kontrollere, om et kort ikke er tomt og indeholder mindst en post:

offentlig tomrumsreparation (Map repairParts) {Assert.notEmpty (repairParts, "map of repairParts must not be empty"); // ...}

8. Array påstande

8.1. notEmpty () til arrays

Endelig kan vi kontrollere, om en matrix ikke er tom og indeholder mindst et element ved hjælp af notEmpty () metode:

offentlig tomrumsreparation (String [] repairParts) {Assert.notEmpty (repairParts, "array of repairParts must not be empty"); // ...}

8.2. noNullElements ()

Vi kan kontrollere, at en matrix ikke indeholder nul elementer ved hjælp af noNullElements () metode:

public void repairWithNoNull (String [] repairParts) {Assert.noNullElements (repairParts, "array of repairParts mustn't contain null elements"); // ...}

Bemærk, at denne kontrol stadig passerer, hvis arrayet er tomt, så længe der ikke er nogen nul elementer i det.

9. Konklusion

I denne artikel undersøgte vi Hævde klasse. Denne klasse bruges i vid udstrækning inden for foråret, men vi kunne let skrive mere robust og ekspressiv kode, der udnytter den.

Som altid kan den komplette kode til denne artikel findes i GitHub-projektet.


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