Stiamo pensando di utilizzare Cetriolo sul nostro progetto per il test di accettazione.Come organizzare la definizione delle specifiche in Cetriolo?
Quando scriviamo un scenario
in un cetriolo feature
, scriviamo un elenco di Given
, When
e Then
dichiarazioni.
Come usiamo cucumber-jvm progetto, la dichiarazione Given
, When
e Then
sono legati a metodi Java in (JUnit) classi.
Desidero sapere qual è la migliore organizzazione per il codice relativo a Given
/When
/Then
nella struttura del progetto. La mia preoccupazione principale è il mantenimento dei test di cetriolo su un grande progetto, in cui il numero di scenari è piuttosto importante, e in particolare per quanto riguarda gli elementi condivisi tra le funzionalità.
posso vedere almeno 2 approcci principali:
Ogni funzione è legata ad essa la propria classe di JUnit. Quindi, se ho un file cetriolo
foo/bar/baz.feature
, troverò la classe JUnitfoo.bar.Baz
con i metodi adeguati@Given
,@When
e@Then
annotato.Separare i metodi
@Given
,@When
e@Then
in classi e pacchetti "tematici". Ad esempio, se nel mio scenario cetriolo ho una dichiarazioneGiven user "foo" is logged
, il metodo annotato@Given("^user \"([^\"]*)\" is logged$")
si troverà nel metodo di classefoo.user.User
, ma potenzialmente il metodo@When
utilizzato successivamente nello stesso scenario cetriolo sarà in una classe e pacchetto Java diversi (diciamofoo.car.RentCar
).
Per me, il primo approccio sembra buona in modo che io possa fare facilmente il rapporto tra le mie caratteristiche di cetriolo e il mio codice Java. Ma l'inconveniente è che posso avere un sacco di ridondanze o di duplicazione del codice. Inoltre, potrebbe essere difficile trovare un possibile metodo esistente @Given
, per evitare di ricrearlo (l'IDE può aiutare, ma qui stiamo usando Eclipse, e non sembra fornire un elenco di dichiarazioni esistenti Given
?).
L'altro approccio sembra meglio essenzialmente quando si dispone di Given
condizioni condivisi tra più caratteristica cetriolo, e, quindi, voglio evitare la duplicazione del codice. Lo svantaggio qui è che può essere difficile stabilire il collegamento tra il metodo Java @Given
e l'istruzione cetriolo Given
(forse, di nuovo, l'IDE può aiutare?).
Sono abbastanza nuovo per il cetriolo, quindi forse la mia domanda non è una buona domanda, e con il tempo e l'esperienza, la struttura sarà ovvia, ma voglio ricevere feedback positivi sul suo utilizzo ...
Grazie.
Nota che non penso sia un duplicato di questa domanda: http://stackoverflow.com/questions/5023128/cucumber-how-to-organize-a-complex-test-set – romaintaz