Hamcrestovi zajednički jezgri
1. Pregled
U ovom brzom vodiču istražit ćemo CoreMatchers klase iz popularnog Hamcrestova okvira za pisanje jednostavnih i izražajnijih test slučajeva.
Ideja je natjerati tvrdnje da se čitaju kao prirodni jezik.
2. Hamcrest postavljanje
Hamcrest možemo koristiti s Mavenom dodavanjem sljedeće ovisnosti našoj pom.xml datoteka:
org.hamcrest java-hamcrest 2.0.0.0 test
Najnoviju verziju ove knjižnice uvijek možete pronaći ovdje.
3. Uobičajena podudaranja jezgre
3.1. je (T) i je (podudaranje)
The je (T) uzima objekt kao parametar za provjeru jednakosti i je (podudaranje) uzima još jedno podudaranje dopuštajući da izjava o jednakosti bude izražajnija.
To možemo koristiti s gotovo svim metodama:
String testString = "jezgra hamcrest-a"; assertThat (testString, is ("hamcrest core")); assertThat (testString, is (jednakTo ("jezgra hamcrest-a")));
3.2. jednakTo (T)
The jednakTo (T) uzima objekt kao parametar i provjerava njegovu jednakost prema drugom objektu. Ovo se često koristi s je (podudaranje):
String actualString = "jednak za podudaranje"; Popis actualList = Lists.newArrayList ("jednakTo", "podudaranje"); assertThat (actualString, is (jednakTo ("jednakTo se podudara"))); assertThat (actualList, is (jednakTo (Lists.newArrayList ("jednakTo", "podudaranje"))));
Možemo i koristiti jednakToObjekt (operativni objekt) - koji provjerava jednakost i ne provodi da dva objekta trebaju biti istog statičkog tipa:
Izvornik objekta = 100; assertThat (original, jednakToObjekt (100));
3.3. ne (T) i ne (podudaranje)
The ne (T) i ne (podudaranje) koriste se za provjeru nejednakosti zadanih objekata. Prvo uzima objekt kao argument, a drugo uzima drugo podudaranje:
String testString = "kraljevstvo Troja"; assertThat (testString, not ("njemačko kraljevstvo")); assertThat (testString, is (not (jednakTo ("njemačko kraljevstvo")))); assertThat (testString, is (not (instanceOf (Integer.class)))));
3.4. nullValue () i nullValue (klasa)
The nullValue () provjeri za null vrijednost prema ispitivanom predmetu. The nullValue (klasa) provjerava null za dani objekt tipa klase:
Cijeli broj nullObject = null; assertThat (nullObject, je (nullValue ())); assertThat (nullObject, is (nullValue (Integer.class))));
3.5. notNullValue () i notNullValue (klasa)
Ovo su prečaci do često korištenih je (nije (nullValue)). Oni provjeravaju ne-null-jednakost objekta ili tipa klase:
Cijeli broj testNumber = 123; assertThat (testNumber, is (notNullValue ())); assertThat (testNumber, is (notNullValue (Integer.class)));
3.6. instanceOf (klasa)
The instanceOf (klasa) podudara se ako je ispitivani objekt instanca navedenog Razredtip.
Za provjeru, ova metoda interno pozivaisIntance (objekt) od Razred razred:
assertThat ("instanceOf example", je (instanceOf (String.class)));
3.7. je(Vrsta klase)
The isA (vrsta klase) je prečac do gore navedenog instanceOf (klasa). Potrebna je potpuno ista vrsta argumenta kao i instanceOf (klasa):
assertThat ("Drogon je najveći zmaj", isA (String.class));
3.8. sameInstance ()
The sameInstance () podudara se ako dvije referentne varijable usmjeravaju na isti objekt u hrpi:
Niz string1 = "Viseron"; Niz string2 = string1; assertThat (string1, is (sameInstance (string2)));
3.9. bilo koji (klasa)
The bilo koji (klasa)provjerava je li klasa iste vrste kao stvarni objekt:
assertThat ("test string", je (bilo koji (String.class))); assertThat ("test niz", je (bilo koji (Object.class)));
3.10. allOf (Matcher…) i anyOf (Matcher…)
Možemo koristiti allOf (Matcher ...) tvrditi da li se stvarni objekt podudara sa svim navedenim uvjetima:
String testString = "Ahil je moćan"; assertThat (testString, allOf (startWith ("Achi"), endsWith ("ul"), containsString ("Achilles")));
The anyOf (Matcher ...) ponaša se kao allOf (Matcher…) ali se podudara ako ispitivani objekt ispunjava bilo koji od navedenih uvjeta:
String testString = "Hector je ubio Ahila"; assertThat (testString, anyOf (startWith ("Hec"), containsString ("baeldung")));
3.11. hasItem (T) i hasItem (Matcher)
Oni se podudaraju ako se ispita Iterativ prikupljanje podudaranja s danim predmetom ili podudaranjem unutar hasItem () ili hasItem (Matcher).
Da shvatimo kako ovo funkcionira:
Popis popisa = Lists.newArrayList ("java", "spring", "baeldung"); assertThat (list, hasItem ("java")); assertThat (list, hasItem (isA (String.class))));
Slično tome, možemo i mi tvrditi protiv više od jedne stavke pomoću hasItems (T…) i hasItems (Matcher…):
Popis popisa = Lists.newArrayList ("java", "spring", "baeldung"); assertThat (list, hasItems ("java", "baeldung")); assertThat (list, hasItems (isA (String.class), ENDWith ("ing")));
3.12. i (Matcher) i bilo koji (Matcher)
Kao što i samo ime govori, oboje (podudaranje) podudara se kada se oba navedena uvjeta podudaraju s ispitivanim objektom:
String testString = "daenerys targaryen"; assertThat (testString, oboje (startWith ("daene")). i (containsString ("jen")));
i bilo (podudaranje)podudara se kada se bilo koji od navedenih uvjeta podudara s ispitivanim objektom:
String testString = "daenerys targaryen"; assertThat (testString, ili (startWith ("tar")). ili (containsString ("targaryen")));
4. Niz Usporedba
Možemo koristiti containsString (String) ili containsStringIgnoringCase (String) da se utvrdi sadrži li stvarni niz testni niz:
String testString = "Rhaegar Targaryen"; assertThat (testString, containsString ("aegar")); assertThat (testString, containsStringIgnoringCase ("AEGAR"));
Ili startWith (String) i startWithIgnoringCase (String) da se utvrdi započinje li stvarni niz testnim nizom:
assertThat (testString, startWith ("Rhae")); assertThat (testString, startWithIgnoringCase ("rhae"));
Možemo i koristiti završava s (niz) ili endsWithIgnoringCase (niz) tvrditi da li stvarni niz završava testnim nizom:
assertThat (testString, endsWith ("aryen")); assertThat (testString, endsWithIgnoringCase ("ARYEN"));
5. Zaključak
U ovom smo članku razgovarali o različitim metodama CoreMatchers razred u Hamcrest knjižnica.
Kao i uvijek, izvorni kod za primjere možete pronaći na GitHubu.