udtryksfulde test med hamcrest

, udtryksfulde test med hamcrest,,,,, andel,,,,,,,, 13,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, hamcrest er en række matche for at skrive mere udtryksfuldt kode.det er bare sådan, at disse matche er særlig nyttige, når skriftlige prøver.i denne artikel, vil vi se på hamcrest for folkesundhedsprogrammet.,,,,, hvad der er hamcrest?hver hamcrest matcher, hjælper dig skrive test, der læser meget naturligt.,, hamcret er ekspressivitet stammer fra jmock, men det var ikke før tilsætning af den enestående, assertthat(), metode, som det refactored til en selvstændig bibliotek og uafhængigt, anvendelige i afprøvning rammer., efter at dens indledende java vedtagelse, hamcrest resulterer i flere programmering sprog til rådighed.junit, rspec og andre test rammer gennemføre lokalt hamcrest syntaks, fjerne den udtrykkeligt skal omfatte alle biblioteker.på grund af hamcret er hurtig vedtagelse, afprøvning rammer blev klassificeret følgende:,, første generation, afprøvning rammer var meget grundlæggende med en enkelt, assert(), metode med anvendelse: hævder (x = = y).programmører havde vanskeligheder at skrive udtryksfulde og velorganiseret forsøg.det krævede også, at forstå mere komplekse forhold, programmering, viden og skrive mere vanskelig.,, anden generation, afprøvning af rammer, som phpunit, tilbyder en lang række forskellige påstande.disse rammer er fjernet eller kriminelle fra parametre (x = = y) til navnene på de påstande, som f.eks.:, assertequals ($forventede, $faktiske).dette forsøg mere udtryksfuldt og gjort det let at definere skik påstand funktioner.,, tredje generation, afprøvning rammer, anvendes en enkelt påstand metode (, assertthat(),) i forbindelse med udtryksfulde matche, at påstande læse engelsk sætninger:, assertthat ($calculatedresult, svarende til ($expectedresult)), i modsætning til, assertequals ($expectedresult, $calculatedresult),.,, ved hjælp af hamcrest matche kan også hjælpe på andre måder, du kan skrive din brugerdefinerede matche og bruge dem i, assertthat(), funktion.hamcret indeholder også mange flere oplysninger, når noget går galt.i stedet for en obskur meddelelse som "forventede værdi er ikke rigtigt", hamcrest fejl, siger alle værdier i forbindelse med test - - det er både forventede og faktiske værdier.de matche også tillade fleksible påstande, så forsøg ikke svigter efter en mindre ændringer, som ikke skal bryde den test.med andre ord, skrøbelige forsøg er mere robust,.,, installation hamcrest for folkesundhedsprogrammet, der er forskellige måder at installere hamcrest.de to mest almindelige anvendes pære eller downloade kildekoden.på det tidspunkt, hvor dette skriftligt, hamcrest for folkesundhedsprogrammet, er endnu ikke til rådighed gennem komponist., pærer, ved hjælp af pære til at installere hamcrest er let.bare løb følgende kommandoer:, pære - kanal opdage hamcrest.googlecode.com/svn/pear pære installere hamcrest /hamcrest, sørg for at kontrollere, at du har pære er installation mappe i de globale vej.det gør det let at omfatte hamcrest i prøverne, downloade kilde arkiv, kan du hente den seneste version af hamcrest fra projekt downloade side og bruge det som en tredjepart på biblioteket.,, vores første test, lad os først sikre, at vi har et skelet - test med hamcrest aktiveret.skabe et projekt i din bedste ide eller kode redaktør og skabe en test fil.jeg har skabt et nyt projekt i netbeans med en folder kaldet test som den vigtigste mappe.i denne folder, er en tom fil, hamcrestmatchersforphptest. folkesundhedsprogrammet.dette vil være en test fil, og dens indhold er følgende: require_once "hamcrest /hamcrest. folkesundhedsprogrammet" klasse hamcrestmatchersforphptest udvider phpunit_framework_testcase {funktion testhamcrestworks() {assertthat (»a« er (svarende til (»a«)))), første linje, omfatter hamcrest bibliotek.bemærk venligst, at det er med kapital "h" til både den mappe, og sagen navn.hamcrest officielle gør fil indeholder en skrivefejl, næste, vores eneste test, testhamcrestworks(), påstår, at en, der er lig med a.det er klart, at dette er en forbigående test.,,, det første eksempel, er det naturligt at læse.hævder, at "a" er lig med "a".det behøver ingen forklaring. den eneste påstand metode, vil vi bruge vores test, assertthat(),.den matcher, is(), er bare syntaktisk sukker; det gør andet end at opbygge din straf.endelig matcher, equalto(), sammenligner de første parameter, assertthat() med værdi, der leveres til, equalto(),.denne prøve i praksis giver til »a« = = »a«,.,, at sammenligne numrene, lad os starte med et enkelt eksempel:, funktion testnumbers() {assertthat (2 1 /2); assertthat (2, under (3); assertthat (3, er større end assertthat (stk. 2) 2, (identicalto (2)) assertthat (2, comparesequalto (2); assertthat (2, er (på 3, 1)); assertthat (2, (3)))), kan du skrive din brugerdefinerede matche og bruge dem inde i den, assertthat(), funktion. denne kodeks indfører nye matche; de to første er lessthan(), og greaterthan(),.disse matche er svarende til "<" og ">" sammenlignende operatorer.,, identicalto(), giver en anden kontrol af ligestilling.faktum er, at dette svarer til den, = = =, erhvervsdrivende, mens equalto(), = =.en ny matcher i denne kodeks er comparesequalto(), effektivt udføre tilsvarende af!($x - y).i ovennævnte kode, både $x, y og $, er den værdi, 2, så prøven passerer). et af de mest interessante matche er closeto(),.det accepterer to argumenter: målværdien og de tilladte forskel).dette eksempel kontrol, hvis 2, er tæt på, 3, med højst 1.det er naturligvis korrekt, og påstanden går. endelig den sidste påstand er bare en simpel nægtelse kombineret med, is(),.det har gjort gældende, at 2 er ikke, 3. kombineret nummer matche, hamcrest giver også matche det, svarer til, < = og > =, sammenligning operatører.de er et rammende navn, lessthanorequalto(), og greaterthanorequalto(), og de er brugt sådan, funktion testnumberscomposed() {assertthat (2, lessthanorequalto (2); assertthat (2, lessthanorequalto (3); assertthat (3, greaterthanorequalto (3); assertthat (3, assertthat greaterthanorequalto) (2); (2), (atmost (2)) assertthat (2, (atmost (3)) assertthat (3, er (mindst 3)); assertthat (3, er (mindst (2)))), hamcrest giver også, atmost(), og atleast(), matche.det, lessthanorequalto(), og atmost(), matche er identiske.de svarer til $x.naturligvis, greaterthanorequalto(), og atleast(), udføre det stik modsatte, kontrol, $x > = $y,.,,, der arbejder med strenge, hamcrest giver også flere matche for arbejdet med snore.her er nogle eksempler:, funktion teststrings() {assertthat (»det snor, svarende til (»det klynge)); assertthat (»det snor, equaltoignoringcase (»det klynge)); assertthat (»det snor, equaltoignoringwhitespace ("snoren ')); //assertthat (»det snor, equaltoignoringwhitespace ('thisstring")); assertthat (»det snor, identicalto (»det klynge)); assertthat (»det snor, starter med ('th')); assertthat (»det snor, endswith ('ing ')); assertthat (»det snor, containsstring ('str')); assertthat (»det snor, containsstringignoringcase ('str ')); assertthat (»det snor, matchespattern (' /'' \\ s * /«)}, anbefaler jeg, at du bruger mere udtryksfuld matche, når det er muligt, naturligvis, equalto()og identicalto(), matche arbejde med strenge, og de optræder, præcis som man ville forvente.men som du kan se, hamcrest giver andre snor specifikke ligestilling matche.deres navne, som indebærer, equaltoignoringcase(), og equaltoignoringwhitespace(), matche match strenge ved at ignorere og whitespace hhv. andre matche, såsom startswith(), og endswith(), se, hvis de specificerede sub - string er i begyndelsen eller slutningen af den faktiske snor.det, containsstring(), matcher kontrol, hvis de indeholder leveres under streng snor.det, containsstring(), matcher kan også forlænges med containsstringignoringcase(), tilføjelse af sag ufølsomhed.,, matchespattern(), matcher omfatter regelmæssigt udtryk for at finde et match i snor.du kan bruge noget regelmæssigt udtryk, og i mange tilfælde er denne løsning er nødvendige i mere komplekse tråde.under alle omstændigheder anbefaler jeg, at du bruger mere udtryksfuld matche, når det er muligt og kun gribe til regelmæssig udtryk, hvis det er absolut nødvendigt, og det gør din kode mere læsbare af alle. matchende tomme bånd, det er almindeligt at prøve, hvis en snor er tom.hamcrest har du dækket., funktion teststringemptiness() {assertthat (", isemptystring()); assertthat (", emptystring()); assertthat (", isemptyornullstring()); assertthat (null, isemptyornullstring()); assertthat (", nulloremptystring()); assertthat (null, nulloremptystring()); assertthat (»det snor, isnonemptystring()); assertthat (»det snor, nonemptystring())}, ja, der er mange matche for kontrol, hvis en snor er tom.hver variant er en udgave med "er" foran det.i emptystring(), og isemptystring() er identiske, og det samme gælder for de øvrige matche.det, nonemptystring(), og isnonemptystring(), matche kan også være skrevet sådan, assertthat (»det snor, (isemptystring())); assertthat (»det snor, er (ikke (emptystring())); assertthat (»det string ", (nonemptystring()), men det er klart, at disse varianter kan ekstra ordkløveri, hvilket gør det vanskeligt at forstå den kode, der ved første øjekast, optagelser og udelukkelser, her er nogle gode metoder til at afgøre, hvorvidt en variabel tilhører en gruppe:, funktion testinclusionsexclusions() {assertthat ('val 'er (nogenaf ('some", "liste", "af", "val')); assertthat ('val 'er (hvor (uden", "den", "faktiske", "værdi")); assertthat (»det snor, både (containsstring (det)) - > og (containsstring ('string')); røvertthat (»det snor, enten (containsstring (det)) - > orelse (containsstring (')); assertthat (»et værdi, snor eller genstand, er (anything())}, disse eksempler anvender strenge, men du kan bruge disse matche med variabler, som genstande, eller antal etc. den, anyof(), og noneof(), matche afgør, om den forventede variabel består i, forudsat at liste over værdier. de to andre matche, both(), og either(), er almindeligt anvendt med, andalso(), og orelse(), modifikatorer.det er standard:, assertthat ((strpos (»det string "," ").= = falske) & & (strpos (denne kæde, kæde ").= = falske)); assertthat ((strpos (»det string "," ").= = falske)



Previous:
Next Page: