Perpustakaan pengujian C# yang dipengaruhi BDD yang dimasak dengan hanya makan
APPLEYOR:
JustBehave adalah perpustakaan .NET kecil yang membantu Anda menyusun tes C# Anda menjadi konteks dan skenario bergaya BDD. Ini mendukung Nunit dan Xunit dan tergantung pada autofixture untuk konstruksi ketergantungan otomatis menggunakan kerangka pilihan pilihan Anda.
JustBehave ditulis untuk memastikan bahwa tes internal kami mengikuti pola BDD yang konsisten dan waras, tanpa mengandalkan kerangka kerja seperti Specflow dan bahasa Gherkin. Tes yang ditulis menggunakan JustBehave terstruktur dan terorganisir, tanpa memerlukan alat atau plugin tambahan.
Prasyarat: Proyek ini dibangun di .NET V4.0.
Via Nuget:
PM> Install-Package JustBehave
Setelah paket Anda diinstal ke dalam proyek pengujian Anda, bersama dengan kerangka pengujian pilihan Anda, file tes JustBehave standar akan terlihat seperti ini menggunakan 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 " ) ;
}
}
Satu set lengkap contoh yang diuji disediakan dalam repositori dalam proyek justbehave.tests dalam contoh namespace.
Inti dari JustBehave dibangun di atas beberapa kelas kecil:
BehaviourTest
- Diwarisi untuk tes NunitXBehaviourTest
- diwarisi untuk tes xunitThenAttribute
- Digunakan untuk memberi anotasi kondisi Anda kemudian untuk kerangka pengujian nunitFactAttribute
seperti biasaIni mengarah ke kelas tes yang mengikuti konvensi:
public class TestClassNamedAfterABddContext : BehaviourTest < TheClassThatIWantToTest >
{
protected override void Given ( ) { /*...*/ }
protected override void When ( ) { /*...*/ }
[ Then ] public void Assertion1 ( ) { /*...*/ }
[ Then ] public void Assertion2 ( ) { /*...*/ }
}
Nunit TestFixtureAttribute
adalah opsional dan diimplementasikan di dasar kelas perilaku nunit kami.
Inti dari JustBehave adalah kelas dasar untuk pengujian Anda yang menegakkan pola "yang diberikan, kapan, lalu" . Setiap file uji mewakili satu konteks dengan yang diberikan , kapan , dan beberapa kemudian pernyataan.
Tes yang lebih luas dibangun dengan mewarisi dari kelas pengujian sebelumnya , dan mengesampingkan langkah yang diberikan atau ketika menambahkan tambahan kondisi untuk membangun skenario. Berharap untuk menggunakan ruang nama untuk mengelompokkan skenario terkait, sambil memberikan nama kelas tes Anda yang mewakili konteksnya .
Misalnya, saat menguji beberapa infrastruktur pembayaran, berharap untuk berakhir dengan satu set file seperti ini:
/Tests/Payments/WhenIMakeAPayment.cs
/Tests/Payments/AndMyPaymentIsRejected.cs (inherits from WhenIMakeAPayment.cs)
/Tests/Payments/AndMyPaymentIsAccepted.cs (inherits from WhenIMakeAPayment.cs)
Dengan mengikuti gaya ini, Anda akan berakhir dengan pelari uji Resharper yang terlihat seperti ini:
Jika Anda ingin menegaskan pengecualian yang dilemparkan, Anda mengatur langkah yang diberikan () seperti ini:
protected override void Given ( )
{
RecordAnyExceptionsThrown ( ) ;
}
Pengecualian apa pun yang dilemparkan kemudian akan tersedia dalam langkah -langkah Anda untuk Anda untuk menegaskan:
[ Then ]
public void ShouldSeeException ( )
{
ThrownException . ShouldBeTypeOf < NotSupportedException > ( ) ;
}
Agar JustBave dapat membangun grafik ketergantungan Anda, Anda harus:
Untuk mengesampingkan konstruksi sistem yang sedang diuji, Anda perlu mengganti CreateSystemUnderTest()
dan mengembalikan contoh yang valid:
protected override SomethingUnderTest CreateSystemUnderTest ( )
{
return new SomethingUnderTest ( ) ;
}
Atau, untuk mengonfigurasi autofixture, Anda harus mengganti CustomizeAutoFixture()
yang memberikan kustomisasi AutoFixture
yang valid:
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
}
Jika Anda menemukan bug, memiliki permintaan fitur atau bahkan ingin menyumbangkan peningkatan atau memperbaiki, silakan ikuti pedoman yang berkontribusi yang termasuk dalam repositori.
Hak Cipta 2011-2014 Just Eat, Inc. atau afiliasinya. Semua hak dilindungi undang -undang.
Dilisensikan di bawah lisensi Apache, versi 2.0 ("lisensi"). Anda tidak boleh menggunakan file ini kecuali sesuai dengan lisensi. Salinan lisensi terletak di file lisensi di repositori ini.
File ini didistribusikan berdasarkan "sebagaimana adanya", tanpa jaminan atau ketentuan apa pun, baik tersurat maupun tersirat. Lihat lisensi untuk bahasa spesifik yang mengatur izin dan batasan di bawah lisensi.