Hamcrest Common Core Matchers
1. Prehľad
V tomto rýchlom výučbe preskúmame CoreMatchers triedy z populárneho rámca Hamcrest na písanie jednoduchých a výraznejších testovacích prípadov.
Cieľom je, aby sa tvrdenia tvrdili ako prirodzený jazyk.
2. Nastavenie Hamcrest
Hamcrest s Maven môžeme použiť pridaním nasledujúcej závislosti do našej pom.xml spis:
org.hamcrest test Java-hamcrest 2.0.0.0
Najnovšiu verziu tejto knižnice nájdete vždy tu.
3. Spoločné porovnávače jadier
3.1. je (T) a je (Matcher)
The je (T) berie objekt ako parameter na kontrolu rovnosti a je (Matcher) trvá ďalší porovnávač, ktorý umožňuje, aby vyhlásenie o rovnosti bolo expresívnejšie.
Môžeme to použiť takmer so všetkými metódami:
String testString = "hamcrestové jadro"; assertThat (testString, is ("hamcrest core")); assertThat (testString, is (equalTo ("hamcrest core")));
3.2. rovnaké (T)
The rovnaké (T) berie objekt ako parameter a kontroluje jeho rovnosť s iným objektom. Toto sa často používa s je (Matcher):
Reťazec actualString = "rovnaká zhoda"; Zoznam actualList = Lists.newArrayList ("equalTo", "match"); assertThat (actualString, is (equalTo ("equalTo match"))); assertThat (actualList, is (equalTo (Lists.newArrayList ("equalTo", "match"))));
Môžeme tiež použiť equalToObject (operand objektu) - ktorý kontroluje rovnosť a nepresadzuje, aby dva objekty mali rovnaký statický typ:
Originál objektu = 100; assertThat (original, equalToObject (100));
3.3. nie (T) a nie (Matcher)
The nie (T) a nie (Matcher) slúžia na kontrolu nerovnosti daných objektov. Najprv vezmeme objekt ako argument a potom vezmeme iný porovnávač:
String testString = "trójske kráľovstvo"; assertThat (testString, nie ("nemecké kráľovstvo")); assertThat (testString, is (not (equalTo ("nemecké kráľovstvo")))); assertThat (testString, is (not (instanceOf (Integer.class)))));
3.4. nullValue () a nullValue (trieda)
The nullValue () skontrolovať nulový hodnotu oproti skúmanému objektu. The nullValue (trieda) skontroluje nullovateľnosť daného objektu typu triedy:
Celé číslo nullObject = null; assertThat (nullObject, is (nullValue ())); assertThat (nullObject, is (nullValue (Integer.class)));
3.5. notNullValue () a notNullValue (trieda)
Toto je skratka pre často používané je (nie (nullValue)). Tieto kontrolujú nenulovú rovnosť objektu alebo typu triedy:
Celé číslo testNumber = 123; assertThat (testNumber, is (notNullValue ())); assertThat (testNumber, is (notNullValue (Integer.class)));
3.6. instanceOf (trieda)
The instanceOf (trieda) sa zhoduje, ak je skúmaný objekt inštanciou zadaného Triedatypu.
Na overenie táto metóda interne voláisIntance (Object) z Trieda trieda:
assertThat ("instanceOf príklad", je (instanceOf (String.class)));
3.7. isA(Typ triedy)
The isA (typ triedy) je skratka k uvedenému instanceOf (trieda). Trvá to presne ten istý typ argumentu ako instanceOf (trieda):
assertThat ("Drogon je najväčší drak", isA (String.class));
3.8. sameInstance ()
The sameInstance () sa zhoduje, ak dve referenčné premenné smerujú na rovnaký objekt v halde:
Reťazec string1 = "Viseron"; Reťazec string2 = string1; assertThat (string1, is (sameInstance (string2)));
3.9. akýkoľvek (trieda)
The akýkoľvek (trieda)skontroluje, či je trieda rovnakého typu ako skutočný objekt:
assertThat ("testovací reťazec", je (akýkoľvek (String.class))); assertThat ("testovací reťazec", je (akýkoľvek (Object.class)));
3.10. allOf (Matcher ...) a anyOf (Matcher ...)
Môžeme použiť allOf (Matcher ...) tvrdiť, či sa skutočný objekt zhoduje so všetkými zadanými podmienkami:
String testString = "Achilles je silný"; assertThat (testString, allOf (startsWith ("Achi"), endsWith ("ul"), containsString ("Achilles")));
The anyOf (Matcher ...) správa sa ako allOf (Matcher ...) ale zhoduje sa, ak skúmaný objekt vyhovuje niektorej zo zadaných podmienok:
String testString = "Hector zabil Achilla"; assertThat (testString, anyOf (startsWith ("Hec"), containsString ("baeldung")));
3.11. hasItem (T) a hasItem (Matcher)
Tieto sa zhodujú, ak sú preskúmané Iterable kolekcia sa zhoduje s daným objektom alebo kombináciou vo vnútri hasItem () alebo hasItem (Matcher).
Poďme pochopiť, ako to funguje:
Zoznam list = Lists.newArrayList ("java", "jar", "baeldung"); assertThat (list, hasItem ("java")); assertThat (list, hasItem (isA (String.class)));
Podobne môžeme tiež presadzovať proti viac ako jednej položke pomocou hasItems (T…) a hasItems (Matcher ...):
Zoznam list = Lists.newArrayList ("java", "jar", "baeldung"); assertThat (list, hasItems ("java", "baeldung")); assertThat (list, hasItems (isA (String.class), endsWith ("ing"))));
3.12. obaja (Matcher) a buď (Matcher)
Ako už názov napovedá, obaja (Matcher) sa zhoduje, keď sa obidve zadané podmienky zhodujú so skúmaným objektom:
Reťazec testString = "daenerys targaryen"; assertThat (testString, oba (startWith ("daene")). a (containsString ("yen")));
a buď (Matcher)sa zhoduje, keď sa ktorákoľvek zo zadaných podmienok zhoduje so skúmaným objektom:
Reťazec testString = "daenerys targaryen"; assertThat (testString, bud (startWith ("tar")). alebo (containsString ("targaryen")));
4. String Porovnanie
Môžeme použiť containsString (String) alebo containsStringIgnoringCase (reťazec) tvrdiť, či skutočný reťazec obsahuje testovací reťazec:
Reťazec testString = "Rhaegar Targaryen"; assertThat (testString, containsString ("aegar")); assertThat (testString, containsStringIgnoringCase ("AEGAR"));
Alebo startsWith (String) a startWithIgnoringCase (reťazec) tvrdiť, či skutočný reťazec začína testovacím reťazcom:
assertThat (testString, startsWith ("Rhae")); assertThat (testString, startsWithIgnoringCase ("rhae"));
Môžeme tiež použiť končí s (reťazec) alebo endsWithIgnoringCase (reťazec) tvrdiť, či skutočný reťazec končí testovacím reťazcom:
assertThat (testString, endsWith ("aryen")); assertThat (testString, endsWithIgnoringCase ("ARYEN"));
5. Záver
V tomto článku sme diskutovali o rôznych metódach CoreMatchers trieda v Hamcrest knižnica.
A ako vždy, zdrojový kód príkladov nájdete na GitHub.