一个受BDD影响的C#测试库,刚好吃饭
应用程序:
JustBehave是一个小的.NET库,可帮助您将C#测试构建到BDD风格的上下文和场景中。它支持Nunit和Xunit ,并依赖于使用您选择的模拟框架自动依赖性构造自动依赖。
JustBehave的编写是为了确保我们的内部测试遵循一致且理智的模式,而无需依靠Specflow和Gherkin语言等框架。使用JustBehave编写的测试是结构化和组织的,而无需其他工具或插件。
先决条件:该项目构建在.NET v4.0中。
通过Nuget:
PM> Install-Package JustBehave
一旦将包装安装到测试项目中,以及您选择的测试框架,使用Xunit的标准Beashave测试文件将看起来像这样。
//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”的存储库中提供了一组经过测试的示例。
JustBehave的核心是建立在几个小班上的:
BehaviourTest
- 继承用于Nunit测试XBehaviourTest
继承用于Xunit测试ThenAttribute
用于注释您的Nunit测试框架的条件FactAttribute
作为正常这导致了遵循《公约》的测试课程:
public class TestClassNamedAfterABddContext : BehaviourTest < TheClassThatIWantToTest >
{
protected override void Given ( ) { /*...*/ }
protected override void When ( ) { /*...*/ }
[ Then ] public void Assertion1 ( ) { /*...*/ }
[ Then ] public void Assertion2 ( ) { /*...*/ }
}
Nunit TestFixtureAttribute
是可选的,并在我们的Nunit chemiveirtest类的基础上实现。
JustBehave的核心是您的测试的基类,可实施“给定,然后”模式。每个测试文件代表一个具有给定,何时和多个主张的单个上下文。
更广泛的测试是通过从先前的测试类中继承,覆盖给定或何时构建的,同时添加额外的条件以构建方案。期望使用名称空间分组相关的方案,同时给您代表其上下文的测试类名称。
例如,在测试某些付款基础架构时,期望最终得到一组这样的文件:
/Tests/Payments/WhenIMakeAPayment.cs
/Tests/Payments/AndMyPaymentIsRejected.cs (inherits from WhenIMakeAPayment.cs)
/Tests/Payments/AndMyPaymentIsAccepted.cs (inherits from WhenIMakeAPayment.cs)
通过遵循这种样式,您最终将获得一个看起来像这样的弹奏者测试跑者:
如果您想断言异常,则设置给定()步骤:
protected override void Given ( )
{
RecordAnyExceptionsThrown ( ) ;
}
然后,抛出的任何例外都将在您的the步骤中可用,以供您断言:
[ Then ]
public void ShouldSeeException ( )
{
ThrownException . ShouldBeTypeOf < NotSupportedException > ( ) ;
}
为了使JustBehave构建您的依赖图,您必须要么必须:
为了覆盖正在测试的系统的构建,您需要覆盖创建CreateSystemUnderTest()
并返回有效的实例:
protected override SomethingUnderTest CreateSystemUnderTest ( )
{
return new SomethingUnderTest ( ) ;
}
另外,要配置自动固定,您应该覆盖提供有效的AutoFixture
CustomizeAutoFixture()
定义:
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)(“许可证”)获得许可。除了符合许可外,您不得使用此文件。许可证的副本位于此存储库中的许可证文件中。
该文件以“按原样”为基础分发,没有明示或暗示的任何形式的保证或条件。请参阅许可证,以获取执行许可条款和限制的特定语言。