Eine von der BDD beeinflusste C# Testbibliothek, die von einfach Eat gekocht wird
Appveyor:
Just Beehave ist eine kleine .NET-Bibliothek, mit der Sie Ihre C# -Tests in Kontexte und Szenarien im BDD-Stil strukturieren können. Es unterstützt sowohl Nunit als auch Xunit und hängt von der Autofixure für die automatische Abhängigkeitskonstruktion anhand Ihres spöttischen Rahmens der Wahl ab.
Nur verhalten wurde geschrieben, um sicherzustellen, dass unsere internen Tests einem konsistenten und vernünftigen BDD -Muster folgten, ohne sich auf Frameworks wie Specflow und die Gurkin -Sprache zu verlassen. Tests, die nur mit Just verhalten geschrieben wurden, sind strukturiert und organisiert, ohne zusätzliche Werkzeuge oder Plugins zu erfordern.
Voraussetzungen: Das Projekt ist in .NET v4.0 eingebaut.
Über Nuget:
PM> Install-Package JustBehave
Sobald das Paket zusammen mit Ihrem Test -Framework der Wahl in Ihr Testprojekt installiert ist, sieht eine Standard -Testdatei mit Xunit so aus:
//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 " ) ;
}
}
Eine vollständige Reihe von getesteten Beispielen finden Sie im Repository im Project .
Der Kern von Just Verhalten basiert auf einigen kleinen Klassen:
BehaviourTest
für einen Nunit -Test geerbtXBehaviourTest
- für einen Xunit -Test geerbtThenAttribute
- verwendet, um Ihre damaligen Bedingungen für den Nunit -Test -Framework zu kommentierenFactAttribute
wie gewohntDies führt zu Testklassen, die der Konvention folgen:
public class TestClassNamedAfterABddContext : BehaviourTest < TheClassThatIWantToTest >
{
protected override void Given ( ) { /*...*/ }
protected override void When ( ) { /*...*/ }
[ Then ] public void Assertion1 ( ) { /*...*/ }
[ Then ] public void Assertion2 ( ) { /*...*/ }
}
Das Nunit TestFixtureAttribute
ist optional und wird auf der Basis unserer Klassen in Nunit Verhaltenszeit implementiert.
Der Kern von Sory verhalten ist eine Basisklasse für Ihre Tests, die ein "gegebenes, wann, dann" -Muster erzwingt. Jede Testdatei repräsentiert einen einzelnen Kontext mit einem gegebenen , a wenn und mehreren als multiplen dann Behauptungen.
Breitere Tests werden durch Erben von früheren Testklassen erstellt und die angegebenen oder bei Schritten überschrieben, während zusätzliche Bedingungen für die Konstruktion von Szenarien hinzugefügt werden. Erwarten Sie, dass Namespaces zu gruppenbezogenen Szenarien verwendet werden, während Sie Ihren Testklassen Namen geben, die ihren Kontext darstellen .
Wenn Sie beispielsweise eine Zahlungsinfrastruktur testen, erwarten Sie beispielsweise eine Reihe von Dateien wie folgt:
/Tests/Payments/WhenIMakeAPayment.cs
/Tests/Payments/AndMyPaymentIsRejected.cs (inherits from WhenIMakeAPayment.cs)
/Tests/Payments/AndMyPaymentIsAccepted.cs (inherits from WhenIMakeAPayment.cs)
Wenn Sie diesem Stil folgen, erhalten Sie einen Resharper -Testläufer, der so aussieht:
Wenn Sie bei geworfenen Ausnahmen behaupten möchten, stellen Sie Ihren gegebenen Schritt wie folgt ein:
protected override void Given ( )
{
RecordAnyExceptionsThrown ( ) ;
}
Alle ausgeworfenen Ausnahmen sind dann in Ihren dann in Ihren Schritten verfügbar, mit denen Sie behaupten müssen:
[ Then ]
public void ShouldSeeException ( )
{
ThrownException . ShouldBeTypeOf < NotSupportedException > ( ) ;
}
Damit Sie Ihre Abhängigkeitsgraphen nur verüben können, müssen Sie entweder:
Um die Konstruktion des zu testenden Systems zu überschreiben, müssen Sie die Erstellung CreateSystemUnderTest()
überschreiben und eine gültige Instanz zurückgeben:
protected override SomethingUnderTest CreateSystemUnderTest ( )
{
return new SomethingUnderTest ( ) ;
}
Um die AutoFixure zu konfigurieren, sollten Sie CustomizeAutoFixture()
eine gültige AutoFixture
-Anpassung überschreiben:
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
}
Wenn Sie einen Fehler finden, eine Feature -Anfrage haben oder sogar eine Verbesserung oder eine Behebung beitragen möchten, befolgen Sie bitte die im Repository enthaltenen Richtlinien.
Copyright 2011-2014 Just Eat, Inc. oder seine verbundenen Unternehmen. Alle Rechte vorbehalten.
Lizenziert unter der Apache -Lizenz, Version 2.0 ("Lizenz"). Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz befindet sich in der Lizenzdatei in diesem Repository.
Diese Datei wird auf "As is" -Basis ohne Gewährleistungen oder Bedingungen jeglicher Art ausdrücklich oder impliziert verteilt. Siehe die Lizenz für die spezifischen Sprachberechtigungen und Einschränkungen im Rahmen der Lizenz.