Fixture Factory este un instrument pentru a ajuta dezvoltatorii sa construiasca si sa organizeze rapid obiecte false pentru teste unitare. Ideea cheie este de a crea limite de specificatii ale datelor (sabloane) in loc de date codificate. Incercati sa utilizati FF, apoi va puteti concentra asupra comportamentului metodelor dvs. si vom gestiona datele.

Se instaleaza

Folositi-l ca o dependenta maven de proiectul dvs.

<dependency> <groupId> br.com.six2six </groupId> <artifactId> fixture-factory </artifactId> <version> 3.1.0 </version> </dependency>

Utilizare

Scrierea regulilor sablonului

Fixture.of (Client.class) .addTemplate (“valid”, Regula noua () {{add (“id”, random (Long.class, range (1L, 200L))); add (“name”, random ( „Anderson Parra”, „Arthur Hirata”)); add („porecla”, aleatorie („tocilar”, „geek”)); add („e-mail”, „${nickname}@gmail.com”); add ( „ziua de nastere”, instantaneu („acum 18 ani”)); adaugati („adresa”, una (Address.class, „valid”));}}); Fixture.of (Address.class) .addTemplate (“valid”, Regula noua () {{add (“id”, aleatoriu (Long.class, range (1L, 100L))); add (“street”, random ( „Bulevardul Paulista”, „Bulevardul Ibirapuera”)); adaugati („oras”, „Sao Paulo”); adaugati („stat”, „$ {oras}”); adaugati („tara”, „Brazilia”); adaugati (“cod postal”, aleatoriu (“06608000”, “17720000”)); }});

De asemenea, puteti crea un sablon nou pe baza unui alt sablon existent. Folosind aceasta puteti suprascrie definitia unei proprietati

Fixture.of (Address.class) .addTemplate (“augustaStreet”). Inherits (“valid”, Regula noua () {{add (“street”, “Augusta Street”);}});

Folosind codul testelor:

Da-mi un obiect din eticheta „valid”

Client client = Fixture.from (Client.class) .gimme (“valid”);

Da-mi N obiecte de pe eticheta „valid”

Lista <Client> clienti = Fixture.from (Client.class) .gimme (5, “valid”);

Da-mi N obiecte, fiecare dintr-o eticheta

Lista <Client> clienti = Fixture.from (Client.class) .gimme (2, “valid”, “invalid”);

Functii de asistenta suplimentare pentru a crea sablon generic:

Gestionarea sabloanelor

Sabloanele pot fi scrise in interfata TemplateLoader

public class ClientTemplateLoader implementeaza TemplateLoader {@Override public void load () {Fixture.of (Client.class) .addTemplate (“valid”, Regula noua () {{add (“id”, aleatoriu (Long.class, range (1L) , 200L))); add (“nume”, aleatoriu (“Anderson Parra”, “Arthur Hirata”)); add (“porecla”, aleatoriu (“tocilar”, “geek”)); “${nickname}@gmail.com”); add (“ziua de nastere”, instantaneu (“acum 18 ani”)); add (“adresa”, una (Address.class, “valid”));}}); Fixture.of (Address.class) .

inazuma eleven xxx vecinasxxx
tetonas españolas follando sin querer
fire force hentai me follo a mi tia
necrofilia xxx www.maduras.con
orgasmos extremos pajas entre amigos
videos porno corridas incesto asiatico
casadas muy putas se le marca el coño
follando en el parque cartoon xxx
mi madre me folla hermanos rusos follando
sara rossi fakings follando en el parque
fiestas xxx maduras folladas por el culo
videos eroticos italianos abuelasputas
porno iberico folladas en el metro
peliculas eroticas gratis en español se folla a su compañero de piso
shakira follando pornolesvianas
abuelas y nietos xxx concursos nudistas
porno xxxxx videos eroticos italianos
orgias xxx casadas muy putas
coñitos violacion real porno
tetonas gratis videos gay xx

addTemplate (“valid”, Regula noua () {{add (“id”, random (Long.class, range (1L, 100L))); add (“street”, random ( “Bulevardul Paulista”, “Bulevardul Ibirapuera”)); adaugati (“oras”, “Sao Paulo”); adaugati (“stat”, „$ {city}”); add („tara”, „Brazilia”); add (“zipCode”, aleatoriu (“06608000”, “17720000”)); }}); }}

Toate sabloanele pot fi incarcate folosind FixtureFactoryLoader spunand ce pachet contine sabloanele

FixtureFactoryLoader.loadTemplates (“br.com.six2six.template”);

Exemplu de incarcare a sabloanelor cu teste JUnit

@BeforeClass public static void setUp () {FixtureFactoryLoader.loadTemplates (“br.com.six2six.template”); }

Procesoare

Fixture-Factory vine cu un mecanism simplu pentru a executa logica personalizata dupa generarea fiecarui obiect.

Pentru aceasta, implementati interfata procesorului:

public class MyCustomProcessor implementeaza Procesor {public void execute (obiect obiect) {// face ceva cu obiectul creat}}

Si folositi-l:

Fixture.from (SomeClass.class) .uses (new MyCustomProcessor ()). Gimme (“someTemplate”);

Metoda #execute va fi apelata pentru fiecare obiect generat de Fixture-Factory. De exemplu, daca un client are o adresa, cadrul va genera adresa, va apela #execute cu adresa generata ca argument, va seta adresa in client, va apela #execute cu clientul generat ca argument si apoi o va returna.

In cazul in care doriti sa persistati obiectul generat in baza dvs. de date si utilizati Hibernate, avem deja un procesor Hibernate care persista toate obiectele create folosind sesiunea furnizata:

Fixture.from (Client.class) .uses (noul procesor Hibernate (sesiune)). Gimme („valid”);

Relatie (unu-la-unu si unu-la-multi)

Fixture.of (Order.class) .addTemplate (“valid”, Regula noua () {{add (“id”, aleatoriu (Long.class, interval (1L, 200L))); add (“items”, are ( 3) .of (Item.class, “valid”)); // add (“items”, are (3) .of (Item.class, “valid”, “invalid”, “external”)); generati trei articole, fiecare dintr-unul dintre sabloanele date adaugati („plata”, unul (Payment.class, „valid”));}}); Fixture.of (Item.class) .addTemplate (“valid”, Regula noua () {{add (“productId”, aleatoriu (Integer.class, range (1L, 200L)));}}); Fixture.of (Payment.class) .addTemplate (“valid”, Regula noua () {{add (“id”, aleatoriu (Long.class, interval (1L, 200L)));}});

Regex

Fixture.of (Any.class) .addTemplate (“valid”, Regula noua () {{add (“id”, regex (“\\ d {3,5}”)); add (“phoneNumber”, regex ( “(\\ d {2}) – (\\ d {4}) – (\\ d {4})”));});

Data

Fixture.of (Any.class) .addTemplate (“valid”, Regula noua () {{add (“dueDate”, beforeDate (“2011-04-15”, new SimpleDateFormat (“aaaa-MM-dd”))) ; add (“payDate”, afterDate (“2011-04-15”, new SimpleDateFormat (“aaaa-MM-zz”))); add (“ziua de nastere”, randomDate (“2011-04-15”, “2011- 11-07 “, nou SimpleDateFormat (” aaaa-MM-dd “))); add (” cutDate “, instant (” acum “));});

Nume

Fixture.of (Any.class) .addTemplate (“valid”, Regula noua () {{add (“firstName”, firstName ()); add (“lastName”, lastName ());});

Aleatoriu unic

Fixture.of (Any.class) .addTemplate (“valid”, Regula noua () {{add (“tara”, “Brazilia”); add (“stat”, uniqueRandom (“Sao Paulo”, “Rio de Janeiro” , „Minas Gerais”, „Bahia”));}});

Starea atributului acestui dispozitiv va contine o valoare unica de fiecare data cand este generata. Retineti ca, daca acest dispozitiv este generat de mai multe ori decat exista valori de stare disponibile, valorile de stare vor incepe sa se repete.

CNPJ

Fixture.of (User.class) .addTemplate (“valid”, Regula noua () {{add (“cnpj”, cnpj ()); // aceasta va genera un CNPJ neformatat de ex. 11111111111111 add (“cnpj”, cnpj ( true)); aceasta va genera un CNPJ formatat de exemplu 11.111.111 / 1111-11}});

Puteti vedea mai multe utilizari la teste!

Contribuind

Doriti sa contribuiti cu cod, documentatie sau raport de erori?

Faceti acest lucru alaturandu-va listei de corespondenta din Grupurile Google.

credite

Fixture-Factory a fost scris de:

  • Anderson Parra
  • Arthur Hirata
  • Douglas Rodrigo

cu contributii ale mai multor autori, inclusiv:

  • Nykolas Lima

Licenta

Fixture-Factory este lansat sub licenta Apache 2.0. Pentru detalii, consultati fisierul LICENTA inclus in distributie.