Testes UnitA?rios de Apps WP 8.1 com NUnit

2014-09-25_15482014-09-25_12062014-09-25_12072014-09-25_1207

A primeira pergunta que pode surgir com o tAi??tulo desse texto Ai??. O Visual Studio jA? oferece um projeto de teste unitA?rio para Windows Phone 8.1 que atende bem essa prA?tica, entA?o por que usar o NUnit? Bem, existe algumas razAi??es para essa escolha que discutiremos abaixo em detalhes:

1. Queremos executar testes unitA?rios sem depender do emulador

Testes que rodam em emuladores sA?o em geral de baixa performance, devido a todas as bibliotecas e a mA?quina virtual que deve ser levantada para ele funcionar. Isso nA?o Ai?? um problema exclusivo da plataforma Windows Phone. Desenvolvedores das plataformas Android e iPhone tambAi??m enfrentam o mesmo problema. Nesse sentido, cada plataforma deve encontrar um meio prA?prio, viA?vel, de executar testes fora do emulador, em nosso caso, fizemos isso com o NUnit.

2. IntegraAi??A?o com o sistema de integraAi??A?o contAi??nua (CI) do Team Foundation Server

Os testes para Windows Phone oferecidos pelo Visual Studio 2013, rodam apenas localmente, na mA?quina do desenvolvedor. Essa Ai?? uma limitaAi??A?o severa para times A?geis onde a iteraAi??A?o e feedbacks rA?pidos sA?o a chave do processo. Com o NUnit somos capazes de rodar os testes no ambiente de CI do TFS e gerar relatA?rios de cobertura de cA?digo com base nos testes.

ConfiguraAi??A?o de projeto com o NUnit

Em nosso exemplo faremos a configuraAi??A?o do NUnit para testar uma aplicaAi??A?o Windows Phone 8.1. Segue os passo:

1. Crie um novo projeto com o template Blank App (Windows Phone) com o nome Lab.App. Esse serA? o nome do projeto principal e do Solution.

2014-09-25_1207

2. Adicione um novo projeto ao Solution do tipo Class Library (Portable for Universal Apps), para armazenar as classes de negA?cio do seu projeto. Chamaremos esse projeto de Lab.Classes.

2014-09-25_1208

2.1 Nas propriedades do projeto, adicione aos Targets Windows Phone Silverlight 8.1. Esse passo Ai?? necessA?rio para que o projeto possa ser importado nas referA?ncias do Lab.Tests.

2014-09-25_1201

3. Adicione outro projeto ao Solution do mesmo tipo do passo dois, para guardar os testes unitA?rios, nomei esse projeto como Lab.Tests.
3.1 Nas propriedades do projeto, adicione aos Targets Windows Phone Silverlight 8.1. Essa passo Ai?? necessA?rio para que os testes sejam executados pelo NUnit
3.2 Importe os pacotes NUnit, NUnit Adapter for VS 2012 and VS 2013, e Fluent. Utilize o Manage Nuget Packages…

2014-09-25_1200

2014-09-25_1206

4. Adicione a referA?ncia do projeto Lab.Classes ao Lab.App
5. Adicione a referA?ncia do projeto Lab.Classes ao Lab.Tests

O pacote NUnit fornece as bibliotecas necessA?rias para escrever os testes unitA?rios nesse framework. NUnit Adapter permite que os testes sejam executados dentro do visual studio, dessa maneira eles ficam visAi??veis no Test Explorer. Fluent Ai?? um complemento para NUnit que nos permite escrever testes em linguagem mais prA?xima da linguagem humana. Nos aproximando de uma abordagem de testes orientados a comportamento (Behavior Driven Development). Por exemplo:

A invAi??s de escrevermos:

[Test]
public void TransferFunds()
{
    Account source = new Account();
    source.Deposit(200m);

    Account destination = new Account();
    destination.Deposit(150m);

    source.TransferFunds(destination, 100m);

    // Assets do NUnit
    Assert.AreEqual(250m, destination.Balance);
    Assert.AreEqual(100m, source.Balance);
}

EscreverAi??amos,

[Test]
public void TransferFundsUsingFluent()
{
    Account source = new Account();
    source.Deposit(200m);

    Account destination = new Account();
    destination.Deposit(150m);

    source.TransferFunds(destination, 100m);

    // Asserts usando Fluent.
    destination.Balance.Should().Be (250m);
    source.Balance.Should().Be(100m);
}

,

Para executar os testes localmente basta selecionar run all no Test Explorer

2014-09-25_1221

Configurando uma definiAi??A?o de build no TFS

Pelo Team Explorer na seAi??A?o Build crie um novo build definition para o projeto.

2014-09-25_1518

NA?o seAi??A?o de processo defina a propriedade Type of Run Settings como CodeCoverageEnabled Buy skunk seeds with paypal e target platform for tests execution para X86. Conforme figura abaixo:

2014-09-25_1539

Para testar o build. Clique com o botA?o direito na definiAi??A?o recAi??m criada e selecione Instagram spy, Localizador gps movil. Ginette-35 cost Queue New Build. Um diA?logo serA? aberto onde vocA? poderA? modificar os parA?metros do build, apenas confirme os existentes selecionando Queue.

2014-09-25_1548

Ao final do build vocA? terA? um resumo informando se o build foi executado com sucesso, a quantidade de testes que passaram e os que falharam e o percentual de cobertura de cA?digo. Clicando no link junto ao resultado de testes vocA? obtem informaAi??Ai??es detalhadas sobre testes e linhas de cA?digo cobertas por estes.

Resultados de testes:

2014-09-25_1552

Resultados de cobertura:

2014-09-25_1553

Ai?? possAi??vel ainda filtrar quais Assemblies devem ser considerados para a avaliaAi??A?o da cobertura de cA?digo, mas isso Ai?? assunto para outro post.

2014-09-25_15482014-09-25_12062014-09-25_12072014-09-25_1207

Leave a comment

  • 0.0