Vodič za JavaFaker

1. Pregled

JavaFaker je knjižnica koja se može koristiti za generiranje širokog spektra podataka stvarnog izgleda od adresa do referenci popularne kulture.

U ovom uputstvu ćemo pogledati kako koristiti JavaFaker-ove klase za generiranje lažnih podataka. Počet ćemo s uvođenjem Faker razred i FakeValueService, prije nego što prijeđete na uvođenje lokaliteta kako biste podatke učinili specifičnijima na jednom mjestu.

Na kraju ćemo razgovarati o tome koliko su jedinstveni podaci. Za testiranje JavaFaker-ovih klasa poslužit ćemo se regularnim izrazima, više o njima možete pročitati ovdje.

2. Ovisnosti

Ispod je pojedinačna ovisnost koja će nam trebati za početak rada s JavaFaker-om.

Prvo, ovisnost koja će nam trebati za projekte temeljene na Mavenu:

 com.github.javafaker javafaker 0,15 

Za korisnike Gradle-a možete dodati sljedeće na svoj graditi.gradle datoteka:

kompajliraj grupu: 'com.github.javafaker', naziv: 'javafaker', verzija: '0.15'

3. FakeValueService

The FakeValueService razred pruža metode za generiranje slučajnih sekvenci kao i rješavanje .iml datoteke povezane s lokalizacijom.

U ovom ćemo odjeljku pokriti neke korisne metode koje FakerValueService ima za ponuditi.

3.1. Letterificirati, Numerificirati, i Obostrano

Tri su korisne metode Letterificirati, Numerizirati, i Obostrano. Letterificirati pomaže generirati slučajni nizovi abecednih znakova.

Sljedeći, Numerificirati jednostavno generira numeričke sekvence.

Konačno, Obostrano je kombinacija toga dvoje i može stvoriti slučajne alfanumeričke sekvence - korisno za ismijavanje stvari poput ID nizova.

FakeValueService zahtijeva valjanu Lokalno, kao i a RandomService:

@Test public void whenBothifyCalled_checkPatternMatches () baca iznimku {FakeValuesService fakeValuesService = new FakeValuesService (new Locale ("en-GB"), new RandomService ()); Niz e-pošte = fakeValuesService.bothify ("???? ## @ gmail.com"); Matcher emailMatcher = Pattern.compile ("\ w {4} \ d{2}@gmail.com"). Matcher (email); assertTrue (emailMatcher.find ()); }

U ovom jediničnom testu mi stvoriti novi FakeValueService s lokacijom od hr-GB i koristiti oboježiti metoda za generiranje jedinstvene lažne Gmail adrese.

Djeluje po zamjenjujući?' slučajnim slovima i ‘#' sa slučajnim brojevima. Tada jednostavnim možemo provjeriti je li ispis točan Podudaranje ček.

3.2. Regeksificirajte

Slično tome, regeksificirati generira slučajni niz na temelju odabranog uzorka regularnog izraza.

U ovom isječku koristit ćemo FakeValueService za stvaranje slučajnog niza nakon određenog regularnog izraza:

@Test public void givenValidService_whenRegexifyCalled_checkPattern () baca iznimku {FakeValuesService fakeValuesService = new FakeValuesService (new Locale ("en-GB"), new RandomService ()); Niz alphaNumericString = fakeValuesService.regexify ("[a-z1-9] {10}"); Matcher alphaNumericMatcher = Pattern.compile ("[a-z1-9] {10}"). Matcher (alphaNumericString); assertTrue (alphaNumericMatcher.find ()); }

Naše kod stvara mali alfanumerički niz duljine 10. Naš obrazac provjerava generirani niz prema regularnom izrazu.

4. JavaFaker's Faker Razred

The Faker razred omogućuje nam upotrebu JavaFaker-ovih lažnih klasa podataka.

U ovom ćemo odjeljku vidjeti kako instancirati a Faker objekt i upotrijebite ga za pozivanje nekih lažnih podataka:

Faker faker = novi Faker (); Niz ime ulice = faker.address (). Ime ulice (); Broj niza = faker.address (). BuildingNumber (); Niz grada = faker.address (). City (); Niz niza = faker.address (). Country (); System.out.println (String.format ("% s \ n% s \ n% s \ n% s", broj, Ime ulice, grad, država));

Iznad koristimo FakerAdresa objekt za generiranje slučajne adrese.

Kada pokrenemo ovaj kod, dobit ćemo primjer rezultata:

3188 Planine Dayna Nova Granvilleborough Tonga

Možemo vidjeti da je podaci nemaju jedinstveni zemljopisni položaj budući da nismo naveli lokalitet. Da bismo to promijenili, u sljedećem ćemo odjeljku naučiti učiniti podatke relevantnijima za naše mjesto.

Mogli bismo i ovo iskoristiti lažnjaka objekt na sličan način za stvaranje podataka koji se odnose na mnogo više objekata kao što su:

  • Poslovanje
  • Pivo
  • Hrana
  • Broj telefona

Cjelovit popis možete pronaći ovdje.

5. Predstavljamo lokale

Ovdje ćemo predstaviti kako koristite lokalizacije kako biste generirane podatke učinili specifičnijima za jedno mjesto. Uvest ćemo a Faker s američkim i britanskim jezikom:

@Test javna praznina givenJavaFakersWithDifferentLocals_thenHeckZipCodesMatchRegex () {Faker ukFaker = novi Faker (novi jezik ("en-GB")); Faker usFaker = novi Faker (novi jezik ("hr-SAD")); System.out.println (String.format ("američki poštanski broj:% s", usFaker.address (). ZipCode ())); System.out.println (String.format ("britanski poštanski broj:% s", ukFaker.address (). ZipCode ())); Uzorak 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}) "); Podudaranje ukMatcher = ukPattern.matcher (ukFaker.address (). ZipCode ()); assertTrue (ukMatcher.find ()); Podudaranje usMatcher = Pattern.compile ("^ \ d {5} (?: [- \ s] \ d {4})? $") .Matcher (usFaker.address (). ZipCode ()); assertTrue (usMatcher.find ()); }

Iznad, vidimo da su to dvoje Lažnjaci s lokacijom podudaraju se s njihovim regularnim izrazima za poštanske brojeve zemalja.

Ako je lokalizacija prešla na Faker ne postoji, Faker baca a LocaleDoesNotExistException.

Testirat ćemo ovo sljedećim jediničnim testom:

@Test (očekuje se = LocaleDoesNotExistException.class) javna praznina givenWrongLocale_whenFakerInitialised_testExceptionThrown () {Faker wrongLocaleFaker = novi Faker (novi Lokal ((en-seaWorld))); }

6. Jedinstvenost

Dok je JavaFaker naizgled generira podatke u Randomu, jedinstvenost se ne može jamčiti.

JavaFaker podržava zasijavanje svog generatora pseudo-slučajnih brojeva (PRNG) u obliku a RandomService pružiti deterministički izlaz ponovljenih poziva metode.

Jednostavno rečeno, pseudo slučajnost je proces koji se čini slučajnim, ali nije.

Kako to funkcionira možemo vidjeti stvaranjem dva Lažnjaci s istim sjemenom:

@Test javna praznina givenJavaFakersWithSameSeed_whenNameCalled_CheckSameName () {Faker faker1 = novi Faker (novi Random (24)); Faker faker2 = novi Faker (novi Random (24)); assertEquals (faker1.name (). firstName (), faker2.name (). firstName ()); } 

Gornji kod vraća isto ime od dva različiti falsifikatori.

7. Zaključak

U ovom uputstvu istražili smo JavaFaker knjižnica za generiranje lažnih podataka stvarnog izgleda. Također smo obradili dvije korisne satove Faker razred i FakeValueService razred.

Istražili smo kako možemo upotrebljavati lokalizacije za generiranje podataka specifičnih za lokaciju.

Na kraju smo razgovarali o tome kako generirani podaci izgledaju samo slučajno a jedinstvenost podataka nije zajamčena.

Kao i obično, isječke koda možete pronaći na GitHubu.