Библиотека тестирования C# под влиянием BDD, приготовленная Just Feath
Приложение:
JustBeade-это небольшая библиотека .NET, которая помогает вам структурировать ваши тесты C# в контексты и сценарии в стиле BDD. Он поддерживает как NUNIT , так и XUNIT и зависит от автофиксы для автоматической конструкции зависимостей, используя ваш выбор Pramework.
Justbedave был написан, чтобы убедиться, что наши внутренние тесты следовали последовательному и здравомунальному моделю BDD, не полагаясь на такие рамки, как Specflow и язык Gherkin. Тесты, написанные с использованием JustBeave, являются структурированными и организованными, не требуя дополнительного инструмента или плагинов.
Предварительные условия: проект построен в .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 в пространстве имен примеров .
Ядро JustBeave построено на нескольких небольших классах:
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 BEHIORTEST.
Ядром JustBeave является базовым классом для ваших тестов, которые обеспечивают соблюдение «данного, когда», затем » . Каждый тестовый файл представляет собой один контекст с данным , a, когда и множественными, затем утверждениями.
Более широкие тесты построены путем наследства от предыдущих тестовых классов и переоценки данных или когда шаги, добавляя дополнительные, затем условия для построения сценариев. Ожидайте использования пространств имен для группирующих связанных сценариев, предоставляя имена ваших тестовых классов, которые представляют их контекст .
Например, при тестировании некоторой платежной инфраструктуры, ожидайте получить набор файлов, подобных этим:
/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 > ( ) ;
}
Чтобы JustBedave построить ваши графики зависимости, вы должны либо:
Чтобы переопределить строительство тестируемой системы, вам необходимо переопределить 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
}
Если вы найдете ошибку, имеете запрос на функцию или даже хотите внести свой вклад в улучшение или исправление, пожалуйста, следуйте рекомендациям, включенным в репозиторий.
Copyright 2011-2014 Just Eat, Inc. или ее филиалы. Все права защищены.
Лицензировано по лицензии Apache, версия 2.0 («Лицензия»). Вы не можете использовать этот файл, кроме как в соответствии с лицензией. Копия лицензии находится в файле лицензии в этом хранилище.
Этот файл распределяется на основе «как есть», без каких -либо гарантий или условий, явных или подразумеваемых. См. Лицензию для конкретного языка, регулирующих разрешения и ограничения по лицензии.