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.