Útmutató a JavaFakerhez

1. Áttekintés

A JavaFaker egy olyan könyvtár, amely felhasználható valós idejű adatok széles skálájának létrehozására a címektől a populáris kultúra referenciáig.

Ebben az oktatóanyagban megvizsgáljuk, hogyan lehet a JavaFaker osztályait hamis adatok előállítására használni. Kezdjük a Hamisító osztály és a FakeValueService, mielőtt továbblépnénk a területi beállítások bevezetésére, hogy az adatok konkrétabbak legyenek egyetlen helyen.

Végül megvitatjuk, hogy az adatok mennyire egyediek. A JavaFaker osztályainak teszteléséhez használjuk a reguláris kifejezéseket, amelyekről itt olvashat bővebben.

2. Függőségek

Az alábbiakban bemutatjuk az egyetlen függőséget, amelyre szükségünk lesz a JavaFaker használatához.

Először is, a Maven-alapú projektekhez szükséges függőség:

 com.github.javafaker javafaker 0.15 

A Gradle felhasználók számára a következőket adhatja hozzá: épít.gradle fájl:

fordítási csoport: 'com.github.javafaker', név: 'javafaker', verzió: '0.15'

3. FakeValueService

A FakeValueService osztály biztosítja módszerek véletlenszerű szekvenciák előállítására valamint megoldani .yml a területi beállításhoz társított fájlok.

Ebben a szakaszban bemutatjuk azokat a hasznos módszereket, amelyeket a FakerValueService kínál.

3.1. Betűs, Számozzon, és Mindkettő

Három hasznos módszer Betűs, Számozás, és Mindkettő. Betűs segít előállítani ábécés karakterek véletlenszerű sorozata.

Következő, Számozzon egyszerűen numerikus szekvenciákat generál.

Végül, Mindkettő a kettő és a kombinációja véletlenszerű alfanumerikus szekvenciákat hozhat létre - hasznos olyan dolgok kigúnyolásához, mint az azonosító karakterláncok.

FakeValueService érvényes Területi beállítás, valamint a RandomService:

@Test public void, amikor aBothifyCalled_checkPatternMatches () kivételt dob ​​{FakeValuesService fakeValuesService = új FakeValuesService (új területi beállítás ("en-GB"), új RandomService ()); Karakterlánc e-mail = fakeValuesService.bothify ("???? ## @ gmail.com"); Matcher emailMatcher = Pattern.compile ("\ w {4} \ d{2}@gmail.com"). Matcher (email); assertTrue (emailMatcher.find ()); }

Ebben az egység tesztben mi újat csinálni FakeValueService a hu-GB és használja a mindkettő módszer egyedi hamis Gmail-cím létrehozására.

Úgy működik helyébe a?' véletlenszerű betűkkel és ‘#' véletlenszámokkal. Ezután egy egyszerűvel ellenőrizhetjük a kimenet helyességét Matcher jelölje be.

3.2. Regexify

Hasonlóképpen, újjáéleszteni véletlenszerű szekvenciát generál a választott regex minta alapján.

Ebben a részletben a FakeValueService véletlenszerű sorrend létrehozása egy megadott regexet követve:

@Test public void givenValidService_whenRegexifyCalled_checkPattern () dobja a Kivételt {FakeValuesService fakeValuesService = új FakeValuesService (új területi beállítás ("en-GB"), új RandomService ()); String alphaNumericString = fakeValuesService.regexify ("[a-z1-9] {10}"); Matcher alphaNumericMatcher = Pattern.compile ("[a-z1-9] {10}"). Matcher (alphaNumericString); assertTrue (alphaNumericMatcher.find ()); }

A mi kód létrehoz egy 10 hosszúságú kisbetűs alfanumerikus karakterláncot. Mintánk ellenőrzi a létrehozott karakterláncot a regexel.

4. JavaFaker Hamisító Osztály

A Hamisító osztály lehetővé teszi számunkra a JavaFaker hamis adatosztályainak használatát.

Ebben a szakaszban megtudjuk, hogyan lehet a Hamisító objektumot és használjon néhány hamis adatot:

Faker hamisító = új Faker (); Karakterlánc utcanév = hamisító.cím (). Utcanév (); Karakterlánc száma = hamisító.cím (). BuildingNumber (); Vonós város = hamisító.cím (). Város (); Karakterlánc ország = hamisító.cím (). Ország (); System.out.println (String.format ("% s \ n% s \ n% s \ n% s", szám, utcanév, város, ország));

Fent a HamisítóCím objektumot véletlenszerű cím előállításához.

Amikor futtatjuk ezt a kódot, kapunk egy példát a kimenetre:

3188 Dayna-hegység Új Granvilleborough Tonga

Láthatjuk, hogy a az adatoknak nincs egyetlen földrajzi helyük mivel nem adtunk meg területi beállítást. Ennek megváltoztatásához megtanuljuk, hogy az adatokat a helyünk szempontjából relevánsabbá tegyük-e a következő szakaszban.

Ezt is használhatnánk hamisító hasonló módon objektumokat hozhat létre, amelyek sokkal több objektumra vonatkoznak, például:

  • Üzleti
  • Sör
  • Étel
  • Telefonszám

A teljes listát itt találja.

5. A nyelvek bemutatása

Itt bemutatjuk, hogyan kell használjon területi beállításokat, hogy a létrehozott adatok specifikusabbak legyenek egy adott helyre. Bemutatjuk a Hamisító amerikai és angol nyelvű területi beállításokkal:

@Test public void givenJavaFakersWithDifferentLocals_thenHeckZipCodesMatchRegex () {Faker ukFaker = new Faker (new Locale ("en-GB")); Faker usFaker = new Faker (new Locale ("hu-USA")); System.out.println (String.format ("amerikai irányítószám:% s", usFaker.cím (). ZipCode ())); System.out.println (String.format ("brit irányítószám:% s", ukFaker.cím (). ZipCode ())); UkPattern = Pattern.compile ("([Gg] [Ii] [Rr] 0 [Aa] {2}) | ((([[A-Za-z] [0-9] {1,2}) |" + "(([A-Za-z] [A-Ha-hJ-Yj-y] [0-9] {1,2}) | (([A-Za-z] [0-9] [A -Za-z]) | ([A-Za-z] [A-Ha-hJ-Yj-y] "+" [0-9]? [A-Za-z])))) \ s? [0-9] [A-Za-z] {2}) "); Egyező ukMatcher = ukPattern.matcher (ukFaker.cím (). ZipCode ()); assertTrue (ukMatcher.find ()); Matcher usMatcher = Pattern.compile ("^ \ d {5} (?: [- \ s] \ d {4})? $") .Matcher (usFaker.cím (). ZipCode ()); assertTrue (usMatcher.find ()); }

Fent azt látjuk, hogy a kettő Fakerek a területi beállítással megegyeznek az egyes országok irányítószámaihoz tartozó regexikkel.

Ha a területi beállítás a Hamisító nem létezik, az Hamisító dob egy LocaleDoesNotExistException.

Ezt a következő egységvizsgálattal teszteljük:

@Test (várható = LocaleDoesNotExistException.class) public void givenWrongLocale_whenFakerInitialised_testExceptionThrown () {Faker wrongLocaleFaker = new Faker (new Locale ("en-seaWorld")); }

6. Egyediség

Míg a JavaFaker látszólag véletlenszerűen generál adatokat, az egyediség nem garantálható.

A JavaFaker támogatja az ál-véletlenszám-generátor (PRNG) kiírását a formájában RandomService hogy megismételjük a megismételt módszerhívások determinisztikus kimenetét.

Egyszerűen fogalmazva: az álvéletlenszerűség véletlenszerűen megjelenő folyamat, de nem az.

Kettő létrehozásával láthatjuk, hogyan működik ez Fakerek ugyanazzal a maggal:

@Test public void givenJavaFakersWithSameSeed_whenNameCalled_CheckSameName () {Faker faker1 = new Faker (new Random (24)); Faker faker2 = új Faker (új Random (24)); assertEquals (faker1.name (). keresztnév (), faker2.name (). keresztnév ()); } 

A fenti kód kettőből adja vissza ugyanazt a nevet különböző hamisítók.

7. Következtetés

Ebben az oktatóanyagban feltártuk a JavaFaker könyvtár valódi kinézetű hamis adatok előállításához. Két hasznos osztályt is lefedtünk Hamisító osztály és a FakeValueService osztály.

Megvizsgáltuk, hogyan használhatjuk a területi beállításokat helyspecifikus adatok előállításához.

Végül megbeszéltük, hogy a a generált adatok csak véletlenszerűnek tűnnek és az adatok egyedisége nem garantált.

Szokás szerint a kódrészletek megtalálhatók a GitHubon.


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