PDA

View Full Version : [Ruby/Rails] Test framework: quale?


ndakota
20-05-2014, 12:11
Ciao a tutti, devo sviluppare un'applicazione web con Rails e mi chiedevo quali opzioni ci siano come framwork per i test. Lo chiedo perché ho visto che di default Rails usa Minitest ma alcuni tutorial sul web fanno usare Rspec. Mi sapreste fare una panoramica sulle possibilità? Grazie :D

U-Boat
21-05-2014, 11:31
E' più una questione di gusti che tecnica

Minitest è molto simile a junit, di fatto è libreria di testing piuttosto leggero e semplice. E' la scelta preferita da DHH
Rspec invece è un vero e proprio framework di test che sfrutta un proprio DSL per la definizione degli esempi

Le differenze maggiori stanno a livello di organizzazione logica e quanto scrivi.
Con minitest hai una situazione classica con il tipica struttura xUnit, mentre con rspec hai una organizzazione gerarchica meglio definita, possibilità di riusare in modo semplice esempi tra classi e più espressività in generale, che però paghi con una maggiore complessità e nei casi più semplici con anche molto più codice di test da scrivere.

L'applicazione Rails su cui sto lavorando io si appoggia su minitest + rr per i mock: ho fatto questa scelta quando ho iniziato il progetto perchè minitest è più che sufficiente, hai tutto quello che ti serve già integrato e non avevo tempo di capire anche come funziona rspec.

Al contrario per il framework per sistemi di supervisione che stiamo sviluppando adesso abbiamo scelto rspec e per il mio collega non è stato traumatico, pur essendo la sua prima volta con ruby.

Insomma, sta più ai tuoi gusti e background secondo me: se conosci già Rails e Ruby e l'applicazione che stai costruendo ha molta logica di alto livello allora valuta rspec, altrimenti se sei alle prime armi con Rails e Ruby o se la tua applicazione ha molto CRUD e logiche relativamente semplici usa pure minitest che in fondo non ti perdi nulla.

Giusto per darti un'idea a spanne, la mia applicazione rails ha circa 60 tabelle nel db, un centinaio tra modelli ActiveRecord e servizi (non ricordo quanti controller) per un totale di circa 9000 linee di codice Ruby + altrettante per i test (escluso quindi html o js) e non ho ancora rimpianto la scelta di minitest

ndakota
21-05-2014, 14:31
Grazie, molto esaustivo. Ora ci penso un attimo. Comunque anche una delle due applicazioni che devo sviluppare io è all'incirca delle dimensioni di quella che mi hai descritto ;)