Une bibliothèque de test C # influencée par BDD préparée par Just Eat
Appveyor:
JustBehave est une petite bibliothèque .NET qui vous aide à structurer vos tests C # dans des contextes et scénarios de style BDD. Il prend en charge Nunit et Xunit et dépend de l'autofixture pour la construction automatique de dépendance à l'aide de votre cadre de choix moqueur.
JustBehave a été écrit pour s'assurer que nos tests internes ont suivi un modèle BDD cohérent et sain d'esprit, sans s'appuyer sur des frameworks comme SpecFlow et la langue Gherkin. Les tests écrits à l'aide de JustBehave sont structurés et organisés, sans nécessiter d'outillage ou de plugins supplémentaires.
Pré-requis: Le projet est construit dans .NET V4.0.
Via Nuget:
PM> Install-Package JustBehave
Une fois que le package est installé dans votre projet de test, ainsi que votre cadre de test de choix, un fichier de test standard JustBehave ressemblera à celui-ci à l'aide de 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 " ) ;
}
}
Un ensemble complet d'exemples testés est fourni dans le référentiel dans le projet JustBeHave.tests dans l'espace de noms d'exemples .
Le cœur de JustBehave est construit sur quelques petites classes:
BehaviourTest
- Hérité pour un test NunitXBehaviourTest
- Hérité pour un test XunitThenAttribute
- Utilisé pour annoter vos conditions alors pour le cadre de test NunitFactAttribute
comme normalCela conduit à des classes de test qui suivent la convention:
public class TestClassNamedAfterABddContext : BehaviourTest < TheClassThatIWantToTest >
{
protected override void Given ( ) { /*...*/ }
protected override void When ( ) { /*...*/ }
[ Then ] public void Assertion1 ( ) { /*...*/ }
[ Then ] public void Assertion2 ( ) { /*...*/ }
}
La Nunit TestFixtureAttribute
est facultative et implémentée sur la base de nos classes de comportement Nunit.
Le cœur de JustBehave est une classe de base pour vos tests qui applique un modèle "donné, quand, puis" . Chaque fichier de test représente un contexte unique avec un , un quand et plusieurs affirmations.
Des tests plus larges sont construits en héritant à partir des classes de test précédentes et en remplacement des étapes données ou lorsque les étapes, tout en ajoutant des conditions supplémentaires pour construire des scénarios. Attendez-vous à utiliser des espaces de noms pour regrouper les scénarios connexes, tout en donnant vos noms de classes de test qui représentent leur contexte .
Par exemple, lors du test d'une infrastructure de paiement, attendez-vous à se retrouver avec un ensemble de fichiers comme celui-ci:
/Tests/Payments/WhenIMakeAPayment.cs
/Tests/Payments/AndMyPaymentIsRejected.cs (inherits from WhenIMakeAPayment.cs)
/Tests/Payments/AndMyPaymentIsAccepted.cs (inherits from WhenIMakeAPayment.cs)
En suivant ce style, vous vous retrouverez avec un Resharper Test Runner qui ressemble à ceci:
Si vous souhaitez affirmer sur les exceptions lancées, vous configurez votre étape donnée () comme ceci:
protected override void Given ( )
{
RecordAnyExceptionsThrown ( ) ;
}
Toutes les exceptions lancées seront ensuite disponibles dans vos étapes puis à affirmer:
[ Then ]
public void ShouldSeeException ( )
{
ThrownException . ShouldBeTypeOf < NotSupportedException > ( ) ;
}
Pour que JustBehave construise vos graphiques de dépendance, vous devez soit:
Pour remplacer la construction du système testé, vous devez remplacer CreateSystemUnderTest()
et renvoyer une instance valide:
protected override SomethingUnderTest CreateSystemUnderTest ( )
{
return new SomethingUnderTest ( ) ;
}
Alternativement, pour configurer AutoFixture, vous devez remplacer CustomizeAutoFixture()
offrant une personnalisation AutoFixture
valide:
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 vous trouvez un bogue, avez une demande de fonctionnalité ou même souhaitez contribuer une amélioration ou un correctif, veuillez suivre les directives contributives incluses dans le référentiel.
Copyright 2011-2014 Just Eat, Inc. ou ses affiliés. Tous droits réservés.
Licencié sous la licence Apache, version 2.0 (la "licence"). Vous ne pouvez pas utiliser ce fichier sauf conforme à la licence. Une copie de la licence est située dans le fichier de licence dans ce référentiel.
Ce fichier est distribué sur une base «tel quel», sans garantie ni conditions d'aucune sorte, expresse ou implicite. Voir la licence pour la langue spécifique régissant les autorisations et les limitations sous la licence.