Una biblioteca de pruebas de C# influenciada por BDD preparada por Just Eat
Appveyor:
JustBehave es una pequeña biblioteca de .NET que lo ayuda a estructurar sus pruebas de C# en contextos y escenarios de estilo BDD. Admite tanto NUNIT como XUnIT y depende de la autofixtura para la construcción de dependencia automática utilizando su marco de burla de elección.
JustBehave se escribió para garantizar que nuestras pruebas internas siguieran un patrón BDD consistente y sensato, sin depender de marcos como Specflow y el lenguaje Gherkin. Las pruebas escritas con JustBehave están estructuradas y organizadas, sin requerir herramientas o complementos adicionales.
Requisitos previos: el proyecto está construido en .NET v4.0.
Vía Nuget:
PM> Install-Package JustBehave
Una vez que tenga el paquete instalado en su proyecto de prueba, junto con su marco de prueba de elección, un archivo de prueba estándar JustBehave se verá así usando XUnit:
//public class TestClassNamedAfterABddContext : XBehaviourTest<TheClassThatIWantToTest> // XUnit
public class TestClassNamedAfterABddContext : BehaviourTest < TheClassThatIWantToTest > // NUnit
{
private string _input ;
private string _result ;
protected override void Given ( )
{
_input = " my input " ;
}
protected override void When ( )
{
_result = SystemUnderTest . CallingAMethod ( _input ) ;
}
[ Then ]
public void ReturnsSomething ( )
{
_result . ShouldBe ( " something " ) ;
}
}
Se proporciona un conjunto completo de ejemplos probados en el repositorio en el proyecto justbehave .
El núcleo de JustBehave se basa en algunas clases pequeñas:
BehaviourTest
: heredado para una prueba de nunitXBehaviourTest
- heredado para una prueba de XUnitThenAttribute
: se utiliza para anotar sus condiciones entonces para el marco de pruebas de nunitFactAttribute
como normalEsto lleva a clases de prueba que siguen la convención:
public class TestClassNamedAfterABddContext : BehaviourTest < TheClassThatIWantToTest >
{
protected override void Given ( ) { /*...*/ }
protected override void When ( ) { /*...*/ }
[ Then ] public void Assertion1 ( ) { /*...*/ }
[ Then ] public void Assertion2 ( ) { /*...*/ }
}
El NUNIT TestFixtureAttribute
es opcional e implementado en la base de nuestras clases de comportamiento nunit.
El núcleo de JustBehave es una clase base para sus pruebas que imponen un patrón "dado, cuándo, entonces" . Cada archivo de prueba representa un solo contexto con un determinado , A , y múltiples afirmaciones .
Las pruebas más amplias se construyen heredando a partir de clases de prueba anteriores , y anulando los pasos dados o cuando se agreguen condiciones adicionales para construir escenarios. Espere usar espacios de nombres para grupos de escenarios relacionados, al tiempo que le da a sus clases de prueba nombres que representan su contexto .
Por ejemplo, al probar alguna infraestructura de pago, espere terminar con un conjunto de archivos como este:
/Tests/Payments/WhenIMakeAPayment.cs
/Tests/Payments/AndMyPaymentIsRejected.cs (inherits from WhenIMakeAPayment.cs)
/Tests/Payments/AndMyPaymentIsAccepted.cs (inherits from WhenIMakeAPayment.cs)
Siguiendo este estilo, terminarás con un corredor de prueba Resharper que se ve así:
Si desea afirmar las excepciones lanzadas, configura su paso () dado de así:
protected override void Given ( )
{
RecordAnyExceptionsThrown ( ) ;
}
Cualquier excepción lanzada estará disponible en sus pasos para que usted afirme:
[ Then ]
public void ShouldSeeException ( )
{
ThrownException . ShouldBeTypeOf < NotSupportedException > ( ) ;
}
Para que justbe se construya sus gráficos de dependencia, debe:
Para anular la construcción del sistema bajo prueba, debe anular CreateSystemUnderTest()
y devolver una instancia válida:
protected override SomethingUnderTest CreateSystemUnderTest ( )
{
return new SomethingUnderTest ( ) ;
}
Alternativamente, para configurar la autofixture, debe anular CustomizeAutoFixture()
proporcionando una personalización AutoFixture
válida:
protected override void CustomizeAutoFixture ( Fixture fixture )
{
fixture . Customize ( new AutoRhinoMockCustomization ( ) ) ;
// You can add more customisations by adding the NuGet packages for
// Ploeh.AutoFixture.Auto**PopularMockingFramework** and hooking them up
}
Si encuentra un error, tenga una solicitud de función o incluso desea contribuir con una mejora o una solución, siga las pautas contribuyentes incluidas en el repositorio.
Copyright 2011-2014 Just Eat, Inc. o sus afiliados. Reservados todos los derechos.
Con licencia bajo la licencia Apache, versión 2.0 (la "licencia"). No puede usar este archivo, excepto de conformidad con la licencia. Una copia de la licencia se encuentra en el archivo de licencia en este repositorio.
Este archivo se distribuye sobre una base "como es", sin garantías o condiciones de ningún tipo, ya sea expresas o implícitas. Consulte la licencia para los permisos y limitaciones de rigor de idioma específico bajo la licencia.