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:
Licenta
Fixture-Factory este lansat sub licenta Apache 2.0. Pentru detalii, consultati fisierul LICENTA inclus in distributie.