¿Cuál es el Framework BDD más maduro para .NET?


Answers

Echa un vistazo a SpecFlow .

Es una herramienta inspirada en Cucumber que tiene como objetivo proporcionar un enfoque pragmático y sin fricciones para el desarrollo impulsado por la prueba de aceptación y el desarrollo impulsado por el comportamiento para proyectos .NET actuales.

La integración de VisualStudio parece especialmente prometedora.

Question

Hemos estado usando BDD - Desarrollo impulsado por comportamiento (desde la perspectiva de Dan North) como un mecanismo para registrar las pruebas de aceptación de los usuarios e impulsar el desarrollo en un par de proyectos, con un éxito decente. Hasta la fecha, no hemos automatizado las pruebas en sí mismas.

Ahora estoy buscando automatizar las pruebas, pero no estoy seguro de qué marco de comportamiento respaldar. Hasta ahora, NBehave parece ser el precursor, pero ¿hay otros que debería estar mirando? ¿Hay un claro 'ganador' en este momento?




No creo que haya un 'ganador' realmente. Otros marcos incluyen el proyecto SpecUnit.NET y MSpec también se muestra prometedor con los comienzos de un adaptador Gallio . Técnicamente, dado que IronRuby está en el horizonte, rSpec puede ser una opción para aquellos preparados para ir a la vanguardia. NBehave + NSpec podría ser el marco más antiguo con la mejor automatización, aunque me encontré luchando contra la sintaxis demasiado prolija.

Los verificaría todos y elegiría el marco que mejor se adapte al estilo de tus proyectos. Todos son OSS, por lo que es difícil perderlos, el verdadero beneficio es simplemente mudarse a BDD.




En general, me inclinaría por NBehave, combinado con MbUnit y con todos los marcos de DI / burla que necesites. Es un comentario justo de Jim Burger que NBehave es muy prolijo, y me encuentro usando cortar y pegar a veces. Aún así, funciona de maravilla. Estoy usando el complemento ReSharper de Gallio, así que me aparece una ventana extra. Aunque todavía no lo he probado con ccnet.




Concordion.NET no solo es compatible con BDD, sino también con ATDD: http://assertselenium.com/2012/11/05/difference-between-tdd-bdd-atdd/ especificaciones están escritas en inglés sencillo usando HTML. En mi humilde opinión, este es uno de los beneficios de Concordion.NET. Los documentos HTML se pueden organizar en una estructura navegable para construir un sistema de documentación viviente . Y, dado que las pruebas se ejecutan en el sistema, puede estar seguro de que la documentación está siempre actualizada.




Robot Framework también se puede usar con IronPython para hacer ATDD o BDD en .Net. Creo que las capacidades de expresión de Robot Framework son mejores que, por ejemplo. SpecFlow o NSpec . No lo obliga a utilizar una cierta sintaxis, sino que utiliza un enfoque basado en palabras clave. Si está probando aplicaciones web, tiene Selenium2Library que proporciona enlaces a Selenium WebDriver.




También consulte UBADDAS, específico para UAT encontrado en

https://github.com/KernowCode/UBADDAS

con una explicación aquí

http://kernowcode.wordpress.com/ (en junio de 2014)

Puedes escribir una prueba como esta

[Test]
public void IWantToRegisterANewUser()
{
  var user = new User();
  ICustomer customer = new Customer();

  SoThat(MyBusinessValue.IncreaseCustomerBase)
    .As(user)
    .Given(customer.Register)
    .When(customer.Confirm_Registration)
    .Then(customer.Login);
}

y produce esto

I want to register a new user
  so that Increase customer base
       as user
    given Register customer
     when Confirm customer registration
     then Login customer