Uma biblioteca de teste C# influenciada por BDD, cozida por Just Eat
AppVeyor:
JustBehave é uma pequena biblioteca .NET que ajuda a estruturar seus testes C# em contextos e cenários no estilo BDD. Ele suporta Nunit e Xunit e depende da mistura automática para a construção automática de dependência usando sua estrutura de mochila de escolha.
JustBehave foi escrito para garantir que nossos testes internos seguissem um padrão BDD consistente e sã, sem depender de estruturas como SpecFlow e Gherkin Language. Os testes escritos usando o justbehave são estruturados e organizados, sem exigir ferramentas ou plugins adicionais.
Pré-requisitos: O projeto é construído em .NET v4.0.
Via Nuget:
PM> Install-Package JustBehave
Depois de instalar o pacote em seu projeto de teste, juntamente com sua estrutura de teste de escolha, um arquivo de teste JustBehave padrão será assim usando o 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 " ) ;
}
}
Um conjunto completo de exemplos testados é fornecido no repositório no projeto justbehave.testes no espaço de nome dos exemplos .
O núcleo de JustBehave é construído em algumas classes pequenas:
BehaviourTest
- herdado para um teste de freioXBehaviourTest
- herdado para um teste XunitThenAttribute
- usado para anotar suas condições então para a estrutura de teste do NunitFactAttribute
normalmenteIsso leva a aulas de teste que seguem a convenção:
public class TestClassNamedAfterABddContext : BehaviourTest < TheClassThatIWantToTest >
{
protected override void Given ( ) { /*...*/ }
protected override void When ( ) { /*...*/ }
[ Then ] public void Assertion1 ( ) { /*...*/ }
[ Then ] public void Assertion2 ( ) { /*...*/ }
}
O NUNIT TestFixtureAttribute
é opcional e implementado na base de nossas classes de comportamento de Nunit.
O núcleo do JustBehave é uma classe base para seus testes que reforça um padrão "dado, quando, depois" . Cada arquivo de teste representa um único contexto com um dado , quando e múltiplos afirmam .
Os testes mais amplos são construídos herdando a partir de classes de testes anteriores e substituindo as etapas fornecidas ou quando , ao mesmo tempo, adicionando condições adicionais para construir cenários. Espere usar espaços para nomes para agrupar cenários relacionados, enquanto fornece aos nomes das classes de teste que representam seu contexto .
Por exemplo, ao testar alguma infraestrutura de pagamento, espere acabar com um conjunto de arquivos como este:
/Tests/Payments/WhenIMakeAPayment.cs
/Tests/Payments/AndMyPaymentIsRejected.cs (inherits from WhenIMakeAPayment.cs)
/Tests/Payments/AndMyPaymentIsAccepted.cs (inherits from WhenIMakeAPayment.cs)
Seguindo esse estilo, você acabará com um corredor de teste RESHARPER que se parece com o seguinte:
Se você deseja afirmar exceções jogadas, configura sua etapa dada () como esta:
protected override void Given ( )
{
RecordAnyExceptionsThrown ( ) ;
}
Quaisquer exceções lançadas estarão disponíveis em suas etapas para você afirmar:
[ Then ]
public void ShouldSeeException ( )
{
ThrownException . ShouldBeTypeOf < NotSupportedException > ( ) ;
}
Para que justbehave construir seus gráficos de dependência, você deve:
Para substituir a construção do sistema em teste, você precisa substituir CreateSystemUnderTest()
e retornar uma instância válida:
protected override SomethingUnderTest CreateSystemUnderTest ( )
{
return new SomethingUnderTest ( ) ;
}
Como alternativa, para configurar o AutoFixture, você deve substituir CustomizeAutoFixture()
fornecendo uma personalização válida 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
}
Se você encontrar um bug, ter uma solicitação de recurso ou até querer contribuir com um aprimoramento ou correção, siga as diretrizes contribuintes incluídas no repositório.
Copyright 2011-2014 Just Eat, Inc. ou suas afiliadas. Todos os direitos reservados.
Licenciado sob a licença Apache, versão 2.0 (a "licença"). Você não pode usar esse arquivo, exceto em conformidade com a licença. Uma cópia da licença está localizada no arquivo de licença neste repositório.
Este arquivo é distribuído "como está", sem garantias ou condições de qualquer tipo, expresso ou implícito. Consulte a licença para o idioma específico que rege as permissões e limitações sob a licença.