En guide til JavaFaker

1. Oversikt

JavaFaker er et bibliotek som kan brukes til å generere et bredt utvalg av ekte data fra adresser til populære kulturreferanser.

I denne opplæringen vil vi se på hvordan du bruker JavaFakers klasser for å generere falske data. Vi begynner med å introdusere Faker klasse og FakeValueService, før du går videre til å introdusere lokaliteter for å gjøre dataene mer spesifikke for et enkelt sted.

Til slutt vil vi diskutere hvor unike dataene er. For å teste JavaFakers klasser bruker vi vanlige uttrykk, du kan lese mer om dem her.

2. Avhengigheter

Nedenfor er den eneste avhengigheten vi trenger for å komme i gang med JavaFaker.

For det første avhengigheten vi trenger for Maven-baserte prosjekter:

 com.github.javafaker javafaker 0.15 

For Gradle-brukere kan du legge til følgende i din build.gradle fil:

kompilere gruppe: 'com.github.javafaker', navn: 'javafaker', versjon: '0.15'

3. FakeValueService

De FakeValueService klasse gir metoder for å generere tilfeldige sekvenser samt å løse .yml filer tilknyttet lokalområdet.

I denne delen vil vi dekke noen av de nyttige metodene som FakerValueService har å tilby.

3.1. Letterify, Numerifiser, og Bothify

Tre nyttige metoder er Letterify, Nummerere, og Bothify. Letterify hjelper til med å generere tilfeldige sekvenser av alfabetiske tegn.

Neste, Numerifiser genererer ganske enkelt numeriske sekvenser.

Endelig, Bothify er en kombinasjon av de to og kan lage tilfeldige alfanumeriske sekvenser - nyttig for å spotte ting som ID-strenger.

FakeValueService krever en gyldig Lokal, samt en RandomService:

@Test offentlig ugyldig nårBothifyCalled_checkPatternMatches () kaster Unntak {FakeValuesService fakeValuesService = ny FakeValuesService (ny språk ("en-GB"), ny RandomService ()); Streng-e-post = fakeValuesService.bothify ("???? ## @ gmail.com"); Matcher emailMatcher = Pattern.compile ("\ w {4} \ d{2}@gmail.com"). Matcher (email); assertTrue (emailMatcher.find ()); }

I denne enhetstesten, vi lage en ny FakeValueService med et sted på no-NO og bruke begge to metode for å generere en unik falsk Gmail-adresse.

Det fungerer etter erstatte '?' med tilfeldige bokstaver og ‘#' med tilfeldige tall. Vi kan da sjekke at utgangen er riktig med en enkel Matcher Sjekk.

3.2. Kontroller på nytt

På samme måte, regentifisere genererer en tilfeldig sekvens basert på et valgt regex-mønster.

I dette utdraget bruker vi FakeValueService for å lage en tilfeldig sekvens etter en spesifisert regex:

@Test offentlig ugyldighet gittValidService_whenRegexifyCalled_checkPattern () kaster Unntak {FakeValuesService fakeValuesService = ny FakeValuesService (ny lokalitet ("en-GB"), ny RandomService ()); String alphaNumericString = fakeValuesService.regexify ("[a-z1-9] {10}"); Matcher alphaNumericMatcher = Pattern.compile ("[a-z1-9] {10}"). Matcher (alphaNumericString); assertTrue (alphaNumericMatcher.find ()); }

Våre koden oppretter en alfanumerisk streng med små bokstaver med lengde 10. Mønsteret vårt sjekker den genererte strengen mot regex.

4. JavaFaker Faker Klasse

De Faker klasse tillater oss å bruke JavaFakers falske dataklasser.

I denne delen vil vi se hvordan du kan starte en Faker objekt og bruk den til å ringe falske data:

Faker faker = ny Faker (); Streng streetName = faker.address (). StreetName (); Strengnummer = faker.address (). BuildingNumber (); Strengby = faker.adresse (). By (); Stringland = faker.adresse (). Land (); System.out.println (String.format ("% s \ n% s \ n% s \ n% s", nummer, gatenavn, by, land));

Ovenfor bruker vi FakerAdresse objekt for å generere en tilfeldig adresse.

Når vi kjører denne koden, får vi et eksempel på utdataene:

3188 Dayna Mountains New Granvilleborough Tonga

Vi kan se at data har ingen enkelt geografisk plassering siden vi ikke spesifiserte et sted. For å endre dette, lærer vi å gjøre dataene mer relevante for vårt sted i neste avsnitt.

Vi kan også bruke dette forfalskning objekt på en lignende måte for å lage data relatert til mange flere objekter som:

  • Virksomhet
  • Øl
  • Mat
  • Telefonnummer

Du kan finne hele listen her.

5. Introduksjon av lokaliteter

Her vil vi introdusere hvordan bruk lokaliteter for å gjøre genererte data mer spesifikke for ett sted. Vi introduserer en Faker med en amerikansk lokalitet og en britisk lokalitet:

@Test offentlig ugyldig gittJavaFakersWithDifferentLocals_thenHeckZipCodesMatchRegex () {Faker ukFaker = new Faker (new Locale ("en-GB")); Faker usFaker = new Faker (new Locale ("en-US")); System.out.println (String.format ("Amerikansk postnummer:% s", usFaker.address (). ZipCode ())); System.out.println (String.format ("Britisk postnummer:% s", ukFaker.address (). ZipCode ())); Mønster 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}) "); Matcher ukMatcher = ukPattern.matcher (ukFaker.address (). ZipCode ()); assertTrue (ukMatcher.find ()); Matcher usMatcher = Pattern.compile ("^ \ d {5} (?: [- \ s] \ d {4})? $") .Matcher (usFaker.address (). ZipCode ()); assertTrue (usMatcher.find ()); }

Ovenfor ser vi at de to Fakers med lokalområdet samsvarer deres regekser for landets postnummer.

Hvis lokaliteten passerte til Faker eksisterer ikke, den Faker kaster en LocaleDoesNotExistException.

Vi tester dette med følgende enhetstest:

@Test (forventet = LocaleDoesNotExistException.class) offentlig ugyldig givenWrongLocale_whenFakerInitialised_testExceptionThrown () {Faker wrongLocaleFaker = ny Faker (ny lokal ("en-seaWorld")); }

6. Unikt

Mens JavaFaker genererer tilsynelatende data tilfeldig, kan ikke det unike garanteres.

JavaFaker støtter såing av sin pseudo-tilfeldige tallgenerator (PRNG) i form av en RandomService for å gi det deterministiske resultatet av gjentatte metodeanrop.

Enkelt sagt, pseudorandomness er en prosess som virker tilfeldig, men som ikke er det.

Vi kan se hvordan dette fungerer ved å lage to Fakers med samme frø:

@Test offentlig ugyldig gittJavaFakersWithSameSeed_whenNameCalled_CheckSameName () {Faker faker1 = ny Faker (ny tilfeldig (24)); Faker faker2 = ny Faker (ny Random (24)); assertEquals (faker1.name (). firstName (), faker2.name (). firstName ()); } 

Ovennevnte kode returnerer samme navn fra to forskjellige forfalskere.

7. Konklusjon

I denne veiledningen har vi utforsket JavaFaker-bibliotek for å generere falske falske data. Vi har også dekket to nyttige klasser Faker klasse og FakeValueService klasse.

Vi undersøkte hvordan vi kan bruke lokaliteter til å generere stedsspesifikke data.

Til slutt diskuterte vi hvordan data generert virker bare tilfeldige og dataenes unike egenskaper er ikke garantert.

Som vanlig kan du finne kodebiter på GitHub.


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