2009-12-25 15 views
7

Ho appena sentito parlare di BDD quando guardo il video di Scott Guthrie in Sweden. Uno degli ascoltatori ha fatto una domanda a Scott su come VS2010 e ASP.NET MVC fanno per supportare BDD.Qual è il miglior framework BDD per lavorare con ASP.NET MVC 2 + C# 4?

Dopo di che, ho ricerca su BDD (Behavior Driven Development) che si concentrano sulla specifica più di unit testing, quando si confronta con TDD (Test Driven Development). Ho trovato alcuni framework che funzionano con Ruby e Java. Ma non conosco nessun framework famoso per .NET.

Si prega di suggerire su struttura BDD e sintesi PRO/CONs di esso.

PS. quadro BDD suggerita deve lavorare grande su .NET 4, C# 4.0 e ASP.NET MVC 2.

Grazie,

risposta

13

Vedo che questa domanda ha già una risposta e non ho provato NBehave. Ma stiamo usando MSpec (Machine.Specifications) per questo progetto Enterprise piuttosto grande e sta funzionando abbastanza bene per noi qui. Molto bene degno di nota.

Rob Conery ha fatto un ottimo video su Learning BDD, dove si usa MSpec, riga per riga: (link rimosso, non è più disponibile, ma la ricerca di esso)

più su MSpec da Rob Conery, e perché lui lo usa.
http://wekeroad.com/2009/09/21/make-bdd-your-bff-2/ Si potrebbe anche voler controllare i suoi altri post tagged BDD pure.

Pro:

  • Consente a in modo rapido "spegnendo" di tutta la vostra storia, scenerios, Contesti, e specifiche - senza alcun codice vero e proprio. Concentriamoci sul "Behaviors" generale, che è lo scopo di BDD !, senza preoccuparsi del codice e facendolo compilare.
  • Produce un rapporto HTML ECCELLENTE, con "< - NON IMPLEMENTATO" accanto alle specifiche stub. Consegno spesso questo rapporto a: Il Cliente (CEO e CTO), i Testers, le Nuove Risorse che porto sul progetto, e chiunque altro voglia sapere come funziona il software - senza che io debba mostrare una riga di codice!
  • I runner TestDriven.NET sono inclusi in MSpec utilizzando il nuovo collegamento tdnet (nessuna installazione!).
  • L'attributo [Behaviors], insieme al suo tipo di delegato Behaves_like, semplifica la copia di specifiche esistenti da uno scenerio all'altro ad un altro un altro scenerio.

Contro:

  • Poco da alcuna documentazione, anche se non è necessaria molta (guardare il video qui sopra). Recentemente, l'autore ha richiesto assistenza per la documentazione.
  • Ancora nuovo, e solo un progetto secondario dell'autore (non il suo concerto principale). Ma è molto attivo da questo post.

Speranza che aiuta.

+0

Vorrei anche aggiungere che con MSpec 0.3, v'è ora un test runner ReSharper. – eduncan911

+0

Grazie per la condivisione di un sacco di informazioni su quadro BDD. –

1

Hai guardato NBehave? Probabilmente vorresti anche guardare this old question. Ma vorrei anche aggiungere che IMHO è possibile fare BDD usando qualsiasi tipo di framework di test unitario. Un semplice modo semplice è quello di chiamare la tua "classe di test" qualcosa come "Given_X" e quindi lasciare che tutti i tuoi "metodi di prova" abbiano nomi come "It_should_Y".

+0

+1 facendo BDD per un bel po 'di tempo senza un quadro. – jamesaharvey

+0

@james potrebbero piacerti http://storyq.codeplex.com dal momento che è un piccolo quadro che, in fondo ti dà BDD segnalazione stile dal vostro normale test di unità. –

6

ho costruito StoryQ dopo aver deciso che non hai bisogno di molto di un quadro. È molto leggero, incorpora il tuo attuale runner di test, dai un'occhiata al http://storyq.codeplex.com

+0

Sempre bello vedere qualcuno creare il proprio quadro BDD! +1 Un commento OT: nel tuo esempio sulla homepage di StoryQ, mostri le classi incorporate. Il test UNit di ReSharper (versione 4.5) non supporta le classi incorporate. Faresti meglio a rimuovere il wrapper della classe DemoTest e utilizzare invece Namespace più raffinati. – eduncan911

+0

@ eduncan911 sì un altro ancora;). Ehi, non sono sicuro che intendi per "classe incorporata", la gerarchia è: namespace StoryQ.Demo/class DemoTest/method PassingExample ... –

+0

Doh, hai ragione. Non ci sono embedding. :) Scusa, pomeriggio impegnativo. – eduncan911

8

Ti consiglio di provare SpecFlow È strano che nessuno lo abbia menzionato. C'è un ottimo articolo qui su using BDD with Specflow and Asp.Net MVC È open source and is hosted on GitHub

Spec flow usa la sintassi GWT (Given When Then) che personalmente mi piace davvero. Finora abbiamo avuto un grande successo con BDD che sta cercando di implementare usando SpecFlow. È ancora presto, ma finora sta andando bene.

Pro:

  1. integra in VS2008 & VS2010 con un bel plugin
  2. usi popolari dato quando Poi vocabolario
  3. Utilizza test standard di NUnit Runner file di Caratteristica
  4. consente di sufficiente incollare in scenari da Analisti commerciali

Contro:

  1. il codice funzione dietro è un po 'brutto, anche se niente di male
  2. Per quanto ne so, lo schema è piuttosto limitata (mi basta usare NUnit)

Vi incoraggio a Provaci.

Problemi correlati