Hamcrest Common Core Matchers

1. Oversikt

I denne raske opplæringen vil vi utforske CoreMatchers klasse fra det populære Hamcrest-rammeverket for å skrive enkle og mer uttrykksfulle testsaker.

Ideen er å gjøre hevd uttalelser lest som et naturlig språk.

2. Oppsett av Hamcrest

Vi kan bruke Hamcrest med Maven ved å legge til følgende avhengighet til vår pom.xml fil:

 org.hamcrest java-hamcrest 2.0.0.0 test 

Den siste versjonen av dette biblioteket finner du alltid her.

3. Vanlige Core Matchers

3.1. er (T) og er (Matcher)

De er (T) tar et objekt som en parameter for å sjekke likhet og er (Matcher) tar en annen matcher som tillater likestillingserklæring å være mer uttrykksfull.

Vi kan bruke dette med nesten alle metodene:

String testString = "hamcrest core"; assertThat (testString, is ("hamcrest core")); assertThat (testString, is (equalTo ("hamcrest core")));

3.2. equalTo (T)

De equalTo (T) tar et objekt som parameter og sjekker dets likhet med et annet objekt. Dette brukes ofte med er (Matcher):

String actualString = "equalTo match"; Liste actualList = Lists.newArrayList ("equalTo", "match"); assertThat (actualString, is (equalTo ("equalTo match"))); assertThat (actualList, is (equalTo (Lists.newArrayList ("equalTo", "match")));

Vi kan også bruke equalToObject (objektoperand) - som kontrollerer likhet og ikke håndhever at to objekter skal ha samme statiske type:

Objekt original = 100; assertThat (original, equalToObject (100));

3.3. ikke (T) og ikke (Matcher)

De ikke (T) og ikke (Matcher) brukes til å kontrollere at ikke gitte objekter er likeverdige. Tar først et objekt som et argument, og for det andre tar det en annen matcher:

String testString = "troy kingdom"; assertThat (testString, ikke ("tysk rike")); assertThat (testString, is (not (equalTo ("tyske rike")))); assertThat (testString, er (ikke (instanceOf (Integer.class))));

3.4. nullValue () og nullValue (klasse)

De nullValue () se etter null verdi mot det undersøkte objektet. De nullValue (klasse) sjekker for ugyldighet av gitt klasse type objekt:

Heltall nullObject = null; assertThat (nullObject, is (nullValue ())); assertThat (nullObject, is (nullValue (Integer.class)));

3.5. notNullValue () og notNullValue (Class)

Dette er en snarvei til ofte brukte er (ikke (nullValue)). Disse ser etter ikke-null-likhet for et objekt eller med klassetypen:

Heltall testNummer = 123; assertThat (testNumber, is (notNullValue ())); assertThat (testNumber, is (notNullValue (Integer.class)));

3.6. instanceOf (Class)

De instanceOf (Class) samsvarer hvis det undersøkte objektet er en forekomst av det spesifiserte Klassetype.

For å bekrefte, kaller denne metoden interntisIntance (Object) av Klasse klasse:

assertThat ("eksempel på eksempel", er (eksempel på (streng.klasse)));

3.7. er en(Klassetype)

De isA (klassetype) er en snarvei til ovenstående instanceOf (Class). Det tar nøyaktig samme type argumenter som et instanceOf (Class):

assertThat ("Drogon er største drage", isA (String.class));

3.8. sameInstance ()

De sameInstance () samsvarer hvis to referansevariabler peker på det samme objektet i en bunke:

String string1 = "Viseron"; Strengstreng2 = streng1; assertThat (streng1, er (sameInstance (streng2)));

3.9. hvilken som helst (klasse)

De hvilken som helst (klasse)sjekker om klassen er av samme type som det faktiske objektet:

assertThat ("teststreng", er (any (String.class))); assertThat ("teststreng", er (any (Object.class)));

3.10. allOf (Matcher ...) og anyOf (Matcher ...)

Vi kan bruke allOf (Matcher ...) for å hevde om faktisk objekt samsvarer med alle de spesifiserte forholdene:

String testString = "Achilles er kraftig"; assertThat (testString, allOf (startsWith ("Achi"), endsWith ("ul"), inneholderString ("Achilles")));

De anyOf (Matcher ...) oppfører seg som allOf (Matcher ...) men samsvarer hvis det undersøkte objektet samsvarer med noen av de spesifiserte forholdene:

String testString = "Hector drepte Achilles"; assertThat (testString, anyOf (startsWith ("Hec"), inneholderString ("baeldung")));

3.11. hasItem (T) og hasItem (Matcher)

Disse samsvarer hvis de blir undersøkt Iterabel samling samsvarer med gitt objekt eller matcher inni hasItem () eller hasItem (Matcher).

La oss forstå hvordan dette fungerer:

List list = Lists.newArrayList ("java", "spring", "baeldung"); assertThat (liste, hasItem ("java")); assertThat (liste, hasItem (isA (String.class)));

På samme måte, vi kan også hevder at mer enn ett element bruker hasItems (T…) og hasItems (Matcher ...):

List list = Lists.newArrayList ("java", "spring", "baeldung"); assertThat (liste, hasItems ("java", "baeldung")); assertThat (liste, hasItems (erA (streng.klasse), slutter med ("ing")));

3.12. både (Matcher) og enten (Matcher)

Som navnet antyder, er begge (Matcher) samsvarer når begge de angitte forholdene samsvarer med det undersøkte objektet:

String testString = "daenerys targaryen"; assertThat (testString, både (startsWith ("daene")). og (inneholderString ("yen")));

og enten (Matcher)samsvarer når en av de angitte forholdene samsvarer med det undersøkte objektet:

String testString = "daenerys targaryen"; assertThat (testString, enten (startsWith ("tar")). eller (inneholderString ("targaryen")));

4. String Sammenligning

Vi kan bruke inneholderString (streng) eller inneholderStringIgnoringCase (streng) for å hevde om selve strengen inneholder teststreng:

String testString = "Rhaegar Targaryen"; assertThat (testString, containString ("aegar")); assertThat (testString, containStringIgnoringCase ("AEGAR"));

Eller starterMed (streng) og startsWithIgnoringCase (streng) for å hevde om selve strengen starter med teststreng:

assertThat (testString, startsWith ("Rhae")); assertThat (testString, startsWithIgnoringCase ("rhae"));

Vi kan også bruke slutter med (streng) eller endsWithIgnoringCase (String) for å hevde om selve strengen slutter med teststreng:

assertThat (testString, endsWith ("aryen")); assertThat (testString, endsWithIgnoringCase ("ARYEN"));

5. Konklusjon

I denne artikkelen diskuterte vi forskjellige metoder for CoreMatchers klasse i Hamcrest bibliotek.

Og som alltid kan kildekoden for eksemplene finnes på GitHub.


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