مكتبة اختبار C# التي تتأثر بها BDD تم طهيها عن طريق تناول الطعام فقط
Appveyor:
Justbehave هي مكتبة صغيرة .NET تساعدك على تنظيم اختبارات C# في سياقات وسيناريوهات على غرار BDD. وهو يدعم كلاً من Nunit و Xunit ويعتمد على Autofixture لبناء التبعية التلقائي باستخدام إطار الاختيار الخاص بك.
تمت كتابة Justbehave للتأكد من أن اختباراتنا الداخلية اتبعت نمط BDD ثابت وذقي ، دون الاعتماد على الأطر مثل Specflow ولغة Gherkin. يتم تنظيم الاختبارات المكتوبة باستخدام JustBehave وتنظيمها ، دون الحاجة إلى أدوات إضافية أو مكونات إضافية.
المتطلبات المسبقة: تم تضمين المشروع في .NET v4.0.
عبر Nuget:
PM> Install-Package JustBehave
بمجرد تثبيت الحزمة في مشروع الاختبار الخاص بك ، إلى جانب إطار الاختبار الخاص بك ، سيبدو ملف اختبار JustBehave القياسي مثل هذا باستخدام 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 " ) ;
}
}
يتم توفير مجموعة كاملة من الأمثلة التي تم اختبارها في المستودع في مشروع Justbehave.tests في مساحة الاسم الأمثلة .
تم بناء جوهر Justbehave على عدد قليل من الطبقات الصغيرة:
BehaviourTest
- ورث لاختبار NunitXBehaviourTest
- ورث لاختبار XunitThenAttribute
- يستخدم لشرح شروطك في إطار اختبار NunitFactAttribute
كالمعتادهذا يؤدي إلى فئات الاختبار التي تتبع الاتفاقية:
public class TestClassNamedAfterABddContext : BehaviourTest < TheClassThatIWantToTest >
{
protected override void Given ( ) { /*...*/ }
protected override void When ( ) { /*...*/ }
[ Then ] public void Assertion1 ( ) { /*...*/ }
[ Then ] public void Assertion2 ( ) { /*...*/ }
}
Nunit TestFixtureAttribute
اختياري وتنفيذها على قاعدة فئات Nunit Behaviourtest الخاصة بنا.
جوهر Justbehave هو فئة أساسية للاختبارات التي تفرض نمط "معطى ، عندما ، ثم" . يمثل كل ملف اختبار سياقًا واحدًا مع أحدهم ، ومتى ، ثم تأكيدات ثم .
يتم إنشاء اختبارات أوسع من خلال الوراثة من فئات الاختبار السابقة ، والتجاوز المعطى أو عند الخطوات ، مع إضافة شروط إضافية ثم لإنشاء سيناريوهات. توقع استخدام مساحات الأسماء للسيناريوهات المتعلقة بالتجميع ، مع إعطاء أسماء فصول الاختبار التي تمثل سياقها .
على سبيل المثال ، عند اختبار بعض البنية التحتية للدفع ، نتوقع أن ينتهي الأمر بمجموعة من الملفات مثل هذا:
/Tests/Payments/WhenIMakeAPayment.cs
/Tests/Payments/AndMyPaymentIsRejected.cs (inherits from WhenIMakeAPayment.cs)
/Tests/Payments/AndMyPaymentIsAccepted.cs (inherits from WhenIMakeAPayment.cs)
باتباع هذا النمط ، ستنتهي مع عداء اختبار Resharper الذي يبدو هكذا:
إذا كنت ترغب في تأكيد الاستثناءات التي تم إلقاؤها ، فأنت تقوم بإعداد خطوة معينة () مثل هذا:
protected override void Given ( )
{
RecordAnyExceptionsThrown ( ) ;
}
أي استثناءات يتم إلقاؤها ستكون متاحة بعد ذلك في خطواتك لتأكيدها على:
[ Then ]
public void ShouldSeeException ( )
{
ThrownException . ShouldBeTypeOf < NotSupportedException > ( ) ;
}
لكي يقوم Justbehave ببناء الرسوم البيانية الخاصة بك ، يجب عليك إما:
لتجاوز بناء النظام قيد الاختبار ، تحتاج إلى تجاوز CreateSystemUnderTest()
وإعادة مثيل صالح:
protected override SomethingUnderTest CreateSystemUnderTest ( )
{
return new SomethingUnderTest ( ) ;
}
بدلاً من ذلك ، لتكوين Autofixture ، يجب عليك تجاوز CustomizeAutoFixture()
توفير تخصيص AutoFixture
صالح:
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
}
إذا وجدت خطأ أو لديك طلب ميزة أو حتى ترغب في المساهمة في تحسين أو إصلاح ، فيرجى اتباع الإرشادات المساهمة المضمنة في المستودع.
حقوق الطبع والنشر 2011-2014 Just Eat ، Inc. أو الشركات التابعة لها. جميع الحقوق محفوظة.
مرخصة بموجب ترخيص Apache ، الإصدار 2.0 ("الترخيص"). لا يجوز لك استخدام هذا الملف إلا في الامتثال للترخيص. توجد نسخة من الترخيص في ملف الترخيص في هذا المستودع.
يتم توزيع هذا الملف على أساس "كما هو" ، دون ضمانات أو شروط من أي نوع ، إما صريحة أو ضمنية. راجع ترخيص الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.