2009-12-25 8 views
7

Je viens d'entendre parler de BDD quand je regarde la vidéo de Scott Guthrie in Sweden. Un de l'auditeur a posé une question à Scott au sujet de comment VS2010 et ASP.NET MVC font pour soutenir BDD.Quel est le meilleur framework BDD pour travailler avec ASP.NET MVC 2 + C# 4?

Après cela, je recherche environ BDD (Behavior Driven Development) qui se concentrent sur la spécification plus de tests unitaires par rapport à TDD (Test Driven Development). J'ai trouvé un framework qui fonctionne avec Ruby et Java. Mais je ne connais aucun framework célèbre pour .NET.

S'il vous plaît me suggérer à propos de cadre BDD et résumé PROs/CONs de celui-ci.

PS. cadre BDD suggéré doit travailler beaucoup sur .NET 4, C# 4.0 et ASP.NET MVC 2.

Merci,

Répondre

13

Je vois cette question a déjà une réponse, et je n'ai pas essayé NBehave. Mais, nous utilisons MSpec (Machine.Specifications) pour ce projet d'entreprise assez important et cela fonctionne très bien pour nous ici. Très bien vaut la peine d'être mentionné.

Rob Conery a fait une vidéo EXCELLENTE sur l'apprentissage BDD, où il utilise MSpec, ligne par ligne: (lien supprimé, ne sont plus disponibles, mais la recherche pour elle)

En savoir plus sur MSpec de Rob Conery, et pourquoi il l'utilise.
http://wekeroad.com/2009/09/21/make-bdd-your-bff-2/ Vous pourriez également vouloir consulter ses autres messages marqués BDD ainsi.

Plus:

  • rapidement permet de "stubbing" de votre histoire entière, scenerios, Contextes et spécifications - sans code réel. Laissez-vous vous concentrer sur l'ensemble des "comportements", ce qui est le but de BDD !, sans vous soucier du code et de le faire compiler.
  • Produit un rapport HTML EXCELLENT, avec "< - NON IMPLEMENTED" à côté des spécifications stubbed. Je remets souvent ce rapport à: Le Client (CEO et CTO), les testeurs, les nouvelles ressources que j'apporte sur le projet, et tous ceux qui veulent savoir comment le logiciel fonctionne - sans que je doive montrer une ligne de code!
  • Les unités d'exécution TestDriven.NET sont incluses avec MSpec en utilisant la nouvelle liaison tdnet (pas d'installation!). L'attribut [Behaviors], avec son type de délégué Behaves_like, permet de copier des spécifications existantes d'un scénario vers un autre.

Moins:

  • peu à aucune documentation, même si pas beaucoup est nécessaire (voir les vidéos ci-dessus). L'auteur a récemment blogué pour obtenir de l'aide sur la documentation.
  • Encore nouveau, et juste un projet annexe de l'auteur (pas son concert principal). Mais, il est très actif à ce poste.

Espérons que ça aide.

+0

Je devrais aussi ajouter qu'avec MSpec 0.3, il y a maintenant un coureur de test ReSharper. – eduncan911

+0

Merci de partager beaucoup d'informations sur le framework BDD. –

1

Avez-vous regardé NBehave? Vous aussi probablement envie de regarder this old question. Mais je voudrais aussi ajouter que, à mon humble avis, il est possible de faire BDD en utilisant n'importe quel type de cadre de test unitaire. Un moyen simple et simple est de nommer votre "classe de test" quelque chose comme "Given_X" et de laisser toutes vos "méthodes de test" avoir des noms comme "It_should_Y".

+0

+1 fais BDD depuis un certain temps sans cadre. – jamesaharvey

+0

@james vous pourriez aimer http://storyq.codeplex.com car c'est un très petit framework qui vous donne essentiellement des rapports de style BDD à partir de vos tests unitaires habituels. –

6

J'ai créé StoryQ après avoir décidé que vous n'aviez pas besoin d'un framework. Il est très léger, intègre dans votre coureur de test existant, vérifiez-le à http://storyq.codeplex.com

+0

Toujours agréable de voir quelqu'un créer son propre framework BDD! +1 Un commentaire d'OT: Dans votre exemple sur la page d'accueil de StoryQ, vous montrez des classes incorporées. Le test UNit de ReSharper (à partir de la version 4.5) ne prend pas en charge les classes incorporées. Vous feriez mieux de supprimer le wrapper de classe DemoTest et d'utiliser des espaces de noms plus raffinés à la place. – eduncan911

+0

@ eduncan911 ouais encore un autre;). Hey je ne suis pas sûr que vous voulez dire par "classe incorporée", la hiérarchie est: namespace StoryQ.Demo/class DemoTest/méthode PassingExample ... –

+0

Doh, vous avez raison. Pas d'intégration là-bas. :) Désolé, après-midi occupé. – eduncan911

8

Je recommande d'essayer SpecFlow Il est étrange que personne ne l'a mentionné. Il ya un grand article ici sur using BDD with Specflow and Asp.Net MVC C'est open source and is hosted on GitHub

Spec flow utilise la syntaxe GWT (Given When Then) que personnellement j'aime beaucoup. Nous avons eu beaucoup de succès jusqu'ici avec BDD essayant maintenant de mettre en application utilisant SpecFlow. Il est encore tôt, mais jusqu'à présent tout va bien.

Plus:

  1. Intègre dans VS2008 & VS2010 avec un joli plug-in
  2. usages populaires DONNÉ LORSQUE Puis vocabulaire
  3. Utilise Norme d'essai NUnit Runner
  4. fichier fonction vous permet de coller simplement dans les scénarios de Analystes d'affaires

Les inconvénients:

  1. le code de fonction est un peu laid, mais rien à mauvais
  2. Pour autant que je sache, la présentation des rapports est assez limité (je viens d'utiliser NUnit)

Je vous encourage derrière Essayez.

Questions connexes