Spring Assert Statements

1. Oversikt

I denne veiledningen vil vi fokusere på og beskrive formålet med våren Påstå klasse og demonstrere hvordan du bruker den.

2. Formålet med Påstå Klasse

Våren Påstå klasse hjelper oss med å validere argumenter. Ved å bruke metoder for Påstå klasse kan vi skrive antagelser som vi forventer er sanne. Og hvis de ikke blir oppfylt, kastes et unntak for kjøretid.

Hver PåståSin metode kan sammenlignes med Java hevder uttalelse. Java hevder uttalelse kaster en Feil ved kjøretid hvis tilstanden mislykkes. Det interessante faktum er at disse påstandene kan deaktiveres.

Her er noen kjennetegn ved våren PåståSine metoder:

  • PåståSine metoder er statiske
  • De kaster heller IllegalArgumentException eller IllegalStateException
  • Den første parameteren er vanligvis et argument for validering eller en logisk tilstand å sjekke
  • Den siste parameteren er vanligvis en unntaksmelding som vises hvis valideringen mislykkes
  • Meldingen kan sendes enten som en String parameter eller som en Leverandør parameter

Vær også oppmerksom på at til tross for lignende navn, har Spring-påstander ikke noe til felles med påstandene fra JUnit og andre testrammer. Vårhevdinger er ikke for testing, men for feilsøking.

3. Eksempel på bruk

La oss definere en Bil klasse med en offentlig metode kjøre():

offentlig klasse bil {privat strengstat = "stopp"; public void drive (int speed) {Assert.isTrue (speed> 0, "speed must be positive"); this.state = "drive"; // ...}}

Vi kan se hvordan hastighet må være et positivt tall. Ovenstående rad er en kort vei å kontrollere tilstanden og kaste et unntak hvis tilstanden mislykkes:

if (! (speed> 0)) {throw new IllegalArgumentException ("hastighet må være positiv"); }

Hver PåståDen offentlige metoden inneholder omtrent denne koden - en betinget blokk med et runtime-unntak som applikasjonen ikke forventes å gjenopprette.

Hvis vi prøver å ringe kjøre() metode med et negativt argument, en IllegalArgumentException unntak vil bli kastet:

Unntak i tråden "hoved" java.lang.IllegalArgumentException: hastighet må være positiv

4. Logiske påstander

4.1. er sant()

Denne påstanden ble diskutert ovenfor. Det aksepterer en boolsk tilstand og kaster en IllegalArgumentException når tilstanden er falsk.

4.2. stat()

De stat() metoden har samme signatur som er sant() men kaster IllegalStateException.

Som navnet antyder, bør den brukes når metoden ikke må fortsette på grunn av en ulovlig tilstand av objektet.

Tenk deg at vi ikke kan ringe brensel() metode hvis bilen går. La oss bruke stat() påstand i dette tilfellet:

offentlig tomt drivstoff () {Assert.state (this.state.equals ("stop"), "bil må stoppes"); // ...}

Selvfølgelig kan vi validere alt ved hjelp av logiske påstander. Men for bedre lesbarhet kan vi bruke flere påstander som gjør koden vår mer uttrykksfull.

5. Objekt og type assertions

5.1. ikke null()

Vi kan anta at et objekt ikke er det null ved å bruke ikke null() metode:

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

5.2. isNull ()

På den annen side kan vi sjekke om et objekt er null bruker isNull () metode:

public void replaceBattery (CarBattery carBattery) {Assert.isNull (carBattery.getCharge (), "for å skifte batteri må ladingen være null"); // ...}

5.3. isInstanceOf ()

For å sjekke om et objekt er en forekomst av et annet objekt av den spesifikke typen kan vi bruke isInstanceOf () metode:

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

I vårt eksempel går sjekken vellykket som ToyotaEngine er en underklasse av Motor.

5.4. isAssignable ()

For å sjekke typer kan vi bruke Assert.isAssignable ():

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

To nylige påstander representerer en er en forhold.

6. Tekstpåstander

Tekstpåstander brukes til å utføre kontroller av String argumenter.

6.1. hasLength ()

Vi kan sjekke om en String er ikke blank, noe som betyr at den inneholder minst ett mellomrom ved å bruke hasLength () metode:

offentlig ugyldig startWithHasLength (strengnøkkel) {Assert.hasLength (nøkkel, "nøkkel må ikke være null og ikke tom"); // ...}

6.2. hasText ()

Vi kan styrke tilstanden og sjekke om en String inneholder minst ett tegn som ikke er mellomrom, ved å bruke hasText () metode:

offentlig ugyldig startWithHasText (strengnøkkel) {Assert.hasText (nøkkel, "nøkkelen må ikke være null og må inneholde minst ett tegn som ikke er mellomrom"); // ...}

6.3. inneholder ikke()

Vi kan avgjøre om en String argumentet inneholder ikke et spesifikt underlag ved hjelp av inneholder ikke() metode:

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

7. Samling og kartpåstander

7.1. ikke tom() for samlinger

Som navnet sier, den ikke tom() metoden hevder at en samling ikke er tom, noe som betyr at den ikke er null og inneholder minst ett element:

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

7.2. ikke tom() for Maps

Den samme metoden er overbelastet for kart, og vi kan sjekke om et kart ikke er tomt og inneholder minst en oppføring:

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

8. Array påstander

8.1. ikke tom() for arrays

Til slutt kan vi sjekke om en matrise ikke er tom og inneholder minst ett element ved å bruke ikke tom() metode:

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

8.2. noNullElements ()

Vi kan bekrefte at en matrise ikke inneholder null elementer ved å bruke noNullElements () metode:

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

Merk at denne sjekken fortsatt går hvis matrisen er tom, så lenge det ikke er noe null elementer i den.

9. Konklusjon

I denne artikkelen undersøkte vi Påstå klasse. Denne klassen er mye brukt i løpet av våren, men vi kan enkelt skrive mer robust og ekspressiv kode ved å dra nytte av den.

Som alltid kan den fullstendige koden for denne artikkelen finnes i GitHub-prosjektet.


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