ห้องสมุดการทดสอบ C# ที่ได้รับอิทธิพลจาก BDD ปรุงโดย Just Eat
Appveyor:
JustBehave เป็นไลบรารี. NET ขนาดเล็กที่ช่วยให้คุณจัดโครงสร้างการทดสอบ C# ของคุณเป็นบริบทและสถานการณ์สไตล์ BDD รองรับทั้ง NUNIT และ XUNIT และขึ้นอยู่กับ การผสมอัตโนมัติ สำหรับการก่อสร้างการพึ่งพาอัตโนมัติโดยใช้กรอบการเยาะเย้ยที่คุณเลือก
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 ( ) ;
}
อีกทางเลือกหนึ่งในการกำหนดค่าการผสมอัตโนมัติคุณควรแทนที่ 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 ("ใบอนุญาต") คุณไม่สามารถใช้ไฟล์นี้ยกเว้นตามใบอนุญาต สำเนาใบอนุญาตอยู่ในไฟล์ใบอนุญาตในที่เก็บนี้
ไฟล์นี้มีการแจกจ่ายบนพื้นฐาน "ตามสภาพ" โดยไม่มีการรับประกันหรือเงื่อนไขใด ๆ ไม่ว่าจะโดยชัดแจ้งหรือโดยนัย ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและข้อ จำกัด ภายใต้ใบอนุญาต