2014-04-29 31 views
15

Ho litigato con questa domanda da troppo tempo ormai. So che ho bisogno di saltare nell'uno o nell'altro dato che entrambi sono ovviamente fattibili/utili strumenti, ma sono rimasti bloccati sulla recinzione, ricercando entrambi, per settimane.Primo colpo al test di app Laravel 4 (PHPSpec/BDD contro PHPUnit/TDD)

PHPUnit rispetto a PHPSpec - Quale può portare a migliore manutenzione a lungo termine e pratiche di programmazione?

Ho parlato con molti esperti PHPUnit -> PHPspec convertiti/utenti che ora fanno affidamento su PHPspec, sostenendo che promuove un design migliore grazie al suo approccio BDD. Tuttavia, poiché è uno strumento molto più recente, c'è una mancanza di community/tutorial rispetto a PHPUnit.

Attualmente lo sviluppo del mio PHP si concentra sullo sviluppo di Laravel 4.

Dove PHPUnit è fondamentalmente cotto nel framework di Laravel, sembra che potrebbe essere la scelta più semplice in anticipo, ma mi piace molto l'aspetto BDD di PHPSpec. Tuttavia, sembra che PHPSpec non voglia giocare bene con il setup di facciata di Laravel (che sto anche trovando una buona pratica per stare alla larga quando possibile).

Il mio vero problema è quale di questi sarà più facilmente integrato con successo in un progetto Laravel 4 esistente con zero copertura di test esistente.

Ho avuto una rapida e breve esperienza nell'integrare PHPUnit e PHPSpec in un progetto esistente, ma in realtà non sapevo da dove iniziare a scrivere i test iniziali e alla fine li ho rottamati.

Sto davvero cercando di capire quale potrebbe valere la pena investire un po 'di tempo nel lungo periodo.

Qualsiasi risorsa/intuizione da parte di chiunque abbia sperimentato entrambi sarebbe molto apprezzata.

+0

Sono stato wrestling con la stessa cosa, sei un membro di Laracasts? Jeffrey Way ha alcuni video su PHPUnit e PHPSpec. Poiché sono nuovo di zecca per i test, ho deciso di iniziare con PHPUnit perché c'è molta più documentazione e sembra più facile iniziare. –

+0

Hah @ MitchGlenn questa è la mia esatta situazione. Sono stato con i Laracasts dallo scorso dicembre e ho imparato un sacco da Jeffrey Way (a quanto pare si è preso una simpatia per PHPSpec ultimamente). La curiosità del mio sviluppatore mi porta a desiderare di immergermi in PHPSpec, ma sembra che la scelta più opportuna in termini di tempo/costo sarebbe PHPUnit per quella ragione esatta. Grazie per l'input. – ErikTheDeveloper

+0

Mi sono iscritto 6 giorni fa e ho 65 video, mi sento come se il mio cervello esplodesse presto da così tanti contenuti. Voglio andare con PHPSpec da quanto è bello Jeffrey, ma come dici tu, per essere più efficace nel tempo, sto iniziando con la via più facile per portare a termine il lavoro. –

risposta

33

PhpSpec

PhpSpec è uno strumento didesign. Ti renderà la vita difficile all'inizio se non sei abituato a TDD (approccio test-first).

Imparerai molto durante il processo. Inoltre imprecerai molto. Molte cose, che sono considerate una cattiva pratica, non sono possibili con PhpSpec (come ad esempio le parate parziali). Dovrai capirlo e abbracciarlo. Testare la facciata di Laravel è difficile, perché non è OOP.

È molto più difficile testare un codice esistente con PhpSpec, poiché è necessario renderlo testabile per primo (il che è più semplice con un approccio test-first).

phpunit

D'altra parte, PHPUnit è uno strumentotest. Puoi usarlo con TDD, BDD o qualsiasi altra cosa tu chiami. Ma tu non devi.

Scelta

Se il vostro scopo è quello di imparare a progettare meglio e si sta impegna a metodo di test-first, PhpSpec vi aiuterà. Se il tuo obiettivo è quello di testare o verificare, PhpUnit è tuo amico.

TDD vs BDD

Non è né TDD o BDD. Almeno dal punto di vista del codice, sono uguali. BDD è iniziato come un TDD ridefinito, offrendo una terminologia migliore. Ora va oltre il livello di codice ed è molto più di questo. In questi giorni preferisco usare un termine proposto da Gojko Adzic - Specifica dall'esempio.

+0

Perfetto. Questo è più o meno il succo che ho imparato leggendo e sperimentando con i due ... Nel mio caso, probabilmente ho bisogno di iniziare con PHPUnit, dal momento che ho davvero bisogno di fare dei test implementati in alcuni progetti esistenti. E poi ... salta nell'arena PHPSpec. Ho usato rails/rspec (* gasp!) Per le ultime settimane e mi sono divertito. Tipo di divisione tra due mondi al momento .... Grazie per l'intuizione. – ErikTheDeveloper

+0

Sto comprendendo questo correttamente: Ogni volta che una delle tue funzioni utilizza una facciata di laravel, è più testabile con phpspec? Penso che questo possa essere correlato a un altro problema che sto avendo (http://stackoverflow.com/questions/27973926/how-do-i-call-validator-from-a-namespace-with-an-already-existing-validator -clas) –