.NET

Teste de unidade do Visual Studio Live: Novo no Visual Studio 2017

Visual Studio 2017 acaba de ser lançado oficialmente. Ele vem com muitas coisas novas e excelentes, mas um dos meus novos recursos favoritos é o Visual Studio Live Unit Testing integrado (disponível no Visual Studio 2017 Enterprise, ainda não disponível para projetos .NET Core).

Nesta postagem, mostrarei como o Visual Studio Live Unit Testing funciona, bem como algumas considerações sobre o uso de testes unitários em comparação com o uso de testes de vídeo. testes de integração. Você pode acompanhar o processo obtendo o código-fonte completo para isso Exemplo de teste de unidade ao vivo no GitHub.

Teste de unidade do Visual Studio Live com o NUnit

O NUnit é talvez a ferramenta de teste mais popular para desenvolvedores C#/.NET. O Visual Studio Live Unit Testing também pode funcionar com o xUnit e o MSTest, mas, nesta postagem, abordarei apenas o NUnit.

Para usar o NUnit, você o adiciona com o NuGet, como de costume. Para usar o Visual Studio Live Testing, você também precisará adicionar o pacote Adaptador de teste NUnit (Instalar o pacote NUnite3TestAdapter).

Em seguida, inicie o teste ao vivo clicando em Test → Live Unit Testing → Start.

Start Visual Studio Live Unit Testing

Escrevendo um teste de unidade

Precisaremos de alguns testes unitários para demonstrar. Poderíamos simplesmente fazer Assert.That(1, Is.EqualTo(1))mas qual é a graça disso? Vamos criar uma classe de carrinho de compras.

Esse carrinho de compras tem algumas propriedades e uma coleção de itens. Observe o Total propriedade. Os leitores mais atentos já devem ter percebido alguns problemas com ela, mas vamos começar com um teste unitário único e simples para garantir que ela calcule um total.

Se o Live Unit Testing estiver ativado, então o teste está sendo executado automaticamente em segundo plano pelo Visual Studio. Você deverá ver algumas marcas de verificação verdes.

Visual Studio Live Unit Testing in action

As marcas de verificação verdes também aparecerão sempre que o código que está sendo testado for coberto.

Visual Studio Live Unit Testing code under test

Com o Visual Studio Live Unit Testing, você não precisa parar para executar os testes. Enquanto estiver codificando, os testes serão executados e lhe darão feedback imediato sobre se o seu código está fazendo com que os testes falhem (ou se você escreveu código suficiente para que o teste seja aprovado).

Acima de tudo, isso o incentivará a escrever mais testes.

O que são testes de integração?

Ao escrever testes de unidade, você deve testar um pequeno trecho de código isoladamente. Para o código que interage com algum serviço externo (um serviço da Web, um banco de dados, um sistema de arquivos etc.), você geralmente simula essas partes para que possa se concentrar na unidade.

Você também pode escrever testes de integração com o NUnit. Testes de integração que têm como objetivo ir além do teste de uma única unidade de código e testar se os sistemas funcionam juntos. Vamos escrever um método que grava um registro no Couchbase Server. Esse teste usará um banco de dados real e, portanto, podemos considerá-lo um teste de integração.

Esse método deve salvar um carrinho de compras em um documento no Couchbase Server. Para ter certeza de que está funcionando, podemos escrever um teste NUnit.

Observação: para simplificar esta postagem, omiti alguns detalhes do repositório e a configuração do teste. Você pode ver tudo isso em o repositório do GitHub.

Testes de integração com o Visual Studio Live Unit Testing

O Visual Studio Live Unit Testing executará com prazer esse teste de unidade. Talvez você não queira que esses tipos de testes sejam executados automaticamente em segundo plano porque:

  1. Se você não tiver o Couchbase Server instalado ou um bucket criado e indexado, eles falharão.
  2. Se você tiver muitos testes que dependem de componentes externos, eles poderão tornar os testes mais lentos (ler/escrever documentos no Couchbase é muito rápido, mas configurar um Aglomerado para cada teste ou dispositivo de teste não é).
  3. Esses testes podem adicionar muitos dados de teste desnecessários e inúteis ao seu banco de dados.

Exclusão de testes de integração do teste de unidade do Visual Studio Live

Para excluir testes do Live Unit Testing, basta clicar com o botão direito do mouse no arquivo de teste e selecionar "Exclude" (Excluir) no menu de contexto.

Exclude from Live Unit Testing

Depois disso, nenhum dos testes desse arquivo será executado pelo Live Unit Testing. Você também pode excluir um projeto inteiro. Portanto, se você organizar os testes de unidade e os testes de integração em projetos separados, estará tudo pronto.

Se você não organizá-los em projetos separados, então esse processo pode ser um pouco tedioso. Além disso, as informações de Incluir/Excluir são uma configuração local que não pode (no momento em que estou escrevendo este texto, e até onde sei) ser confirmada no controle de origem.

Então, depois de perguntar sobre Exclusão de testes ao vivo no StackOverflowEm uma das minhas pesquisas, criei um atributo que você pode colocar nos testes para excluí-los do Live Testing.

Esse atributo implementa o atributo ITestAction (que é uma espécie de Aspect-Oriented Programming/AOP para o NUnit, mas esse é um tópico para outra postagem no blog). Ele verificará se está sendo executado por um LiveUnitTesting processo. Se for, ele instrui o NUnit a ignorar o teste.

Além disso, adicionei uma opção ignoreReason ao construtor, para que você possa adicionar uma nota útil a outras pessoas da sua equipe para explicar por que esse teste não deve ser executado com o Live Unit Testing. Você pode usá-lo em um teste de integração da seguinte forma:

Resumo

Não estou muito satisfeito com esse método, pois ele é específico do NUnit e não é exatamente o que eu esperava com o Visual Studio Live Unit Testing. Mas, no momento, acho que "o suco vale a pena ser espremido". O Live Unit Testing é um recurso tão bom para escrever código, especialmente o TDD (Test-Driven Development, desenvolvimento orientado por testes), que vale a pena ter que escrever e usar um atributo especial do NUnit.

Se você souber de uma maneira melhor de fazer isso, quero saber. Deixe um comentário abaixo ou entre em contato comigo pelo Twitter @mgroves.

Se você tiver dúvidas sobre o código do Couchbase que viu nesta publicação, terei prazer em ajudar. Ou você pode dar uma olhada na comunidade responsiva e bem informada no site Fórum do SDK do Couchbase .NET. Se você quiser saber mais sobre o Couchbase, confira o Portal do desenvolvedor do Couchbase.

Compartilhe este artigo
Receba atualizações do blog do Couchbase em sua caixa de entrada
Esse campo é obrigatório.

Autor

Postado por Matthew Groves

Matthew D. Groves é um cara que adora programar. Não importa se é C#, jQuery ou PHP: ele enviará solicitações de pull para qualquer coisa. Ele tem programado profissionalmente desde que escreveu um aplicativo de ponto de venda QuickBASIC para a pizzaria de seus pais nos anos 90. Atualmente, ele trabalha como gerente sênior de marketing de produtos da Couchbase. Seu tempo livre é passado com a família, assistindo aos Reds e participando da comunidade de desenvolvedores. Ele é autor de AOP in .NET, Pro Microservices in .NET, autor da Pluralsight e Microsoft MVP.

Pronto para começar a usar o Couchbase Capella?

Iniciar a construção

Confira nosso portal do desenvolvedor para explorar o NoSQL, procurar recursos e começar a usar os tutoriais.

Use o Capella gratuitamente

Comece a trabalhar com o Couchbase em apenas alguns cliques. O Capella DBaaS é a maneira mais fácil e rápida de começar.

Entre em contato

Deseja saber mais sobre as ofertas do Couchbase? Deixe-nos ajudar.