SpecFlow dovrebbe essere usato con BDD come sviluppatore solista?

4

Sono un fan di lunga data di TDD e dopo aver letto il libro di RSpec, vorrei passare a un processo BDD. Mi piace l'idea di guidare dall'esterno, come è presentato nel libro.

Quello che sto facendo fatica a capire è come strutturare i test. Ho provato SpecFlow, ma mi sembra complicato da usare quando sono l'unico a guardare i test. Mi piace l'idea di usare semplicemente NUnit, piuttosto di aggiungere un altro framework, come se fosse presentato qui .

Questo è un buon modo per provare e strutturare i test BDD? Ci sono più informazioni là fuori sul confronto tra i due modi (che potrebbe anche essere più recente)?

    
posta Erik L 10.01.2012 - 16:45
fonte

2 risposte

4

È possibile utilizzare NUnit per scrivere test a livello di BDD, proprio come è possibile usare SpecFlow in modo completamente non guidato dal comportamento. Ma, prima che lo facessi, avrei bisogno di una buona ragione per cui non avrei usato lo strumento creato per il lavoro.

Di cosa si tratta SpecFlow che "sembra ingombrante"? Perché dovrebbe essere buono per una squadra e non per un individuo? Il tuo istinto ti sta dicendo che sembra ingombrante perché sei inesperto?

Anche se è un po 'ingombrante per un lavoro individuale, sarebbe una buona pratica utilizzarlo in una squadra più grande in seguito?

Se rispondi a tutte queste domande e non riesci ancora a vedere alcun punto, allora usa NUnit con i nomi dei test in stile BDD.

    
risposta data 10.01.2012 - 17:35
fonte
4

Se stai guardando un framework BDD da utilizzare, devi trovare quello con cui tu ti senti personalmente a tuo agio e che ritieni sia un valore aggiunto. Ci sono diverse opzioni disponibili per .NET, ognuna con diversi pro e contro che dovresti valutare per decidere quale framework ti offre personalmente il miglior equilibrio tra comfort, facilità d'uso e ovviamente funzionalità.

Ho utilizzato ciascuno dei seguenti elementi e ne ho analizzato incidentalmente alcuni come parte di un blog voce solo un paio di mesi fa:

Credo che ce ne siano altri in giro, ma non sono riuscito a trovare i collegamenti mentre li scrivevo.

Come te, ho trovato SpecFlow - e anche alcuni altri - un po 'macchinoso da installare o utilizzare. Non voglio aggiungere prodotti aggiuntivi per supportare il framework BDD. Inoltre non mi piace dover decorare il mio codice con un sacco di testo o attributi aggiuntivi che tendono ad aggiungere un sacco di rumore al codice. Volevo qualcosa che mi permettesse di rappresentare semplicemente la mia sintassi del test BDD in modo naturale e facilmente leggibile all'interno del codice. Dopo un sacco di test e un po 'di un lungo processo di revisione, ho finito per sistemarsi su StoryQ , che ho utilizzato per circa un anno ora combinato con NUnit e Moq . Ha un paio di limitazioni minori da fare con il supporto per i delegati anonimi che funziona ma incasina l'output, e per me l'API ha richiesto un minimo di personalizzazione per migliorare la sintassi story / scenario, che si è rivelata una semplice modifica per un modello DSL. Tuttavia, i limiti erano ampiamente superati dalla facilità con cui ho trovato che il framework poteva essere utilizzato e il supporto attivo da parte dei suoi creatori.

Questa è una scelta che ho fatto dopo un'attenta considerazione in merito ai miei bisogni e alla mia particolare metodologia. Anche se consiglierei a tutti StoryQ a chiunque, sono anche consapevole che la tua metodologia e le tue esigenze potrebbero essere diverse. Tuttavia, per rispondere alla tua domanda, se sei come me e sei convinto che BDD sia un approccio migliore quando scrivi software test-first, allora sì, dovresti usare un framework BDD appropriato. Assicurati che sia la struttura giusta per te.

Durante la strutturazione dei test, ho trovato due approcci che funzionano ragionevolmente bene. Uno è quello di far sì che tutto il codice BDD esista in una classe separata. È un buon modo per mantenere il codice BDD tutti insieme e, se necessario, riutilizzabile, tuttavia è un pasticcio con il libero flusso di testo che rende il codice veramente leggibile. L'altro modo in cui mi sono stabilito, è stato quello di creare una classe di test di base con tutte le cose veramente comuni che faccio, come le asserzioni generalizzate, l'istanziazione SUT e altre cose comuni. Tutte le mie unità di test discendono da questa base e aggiungono semplicemente le istruzioni Assegnazione, Azione e Asserzione specialistica necessarie per completare i miei test. In questo modo, mi attengo comodamente al DRY principale, ho un codice di prova elegante e mi adeguo perfettamente con un comodo stile di sintassi AAA. Funziona bene per me, ma ho dovuto passare attraverso diverse iterazioni di codice per ottenere right per così dire.

    
risposta data 18.02.2012 - 14:03
fonte

Leggi altre domande sui tag