22 04 2015
Dica rápida: Filtrando os testes que serão executados na Integração Contínua do TFS
Uma das etapas da integração contínua é a execução dos testes unitários para validar cada check-in feito no repositório. Se você ainda não trabalha com essa prática, sugiro estudá-la e integrá-la ao seu processo de desenvolvimento (a segurança que essa metodologia te dá não tem preço – se implementada do jeito certo, você fica sabendo em poucos minutos se você quebrou alguma parte do sistema).
Até o Team Foundation Server 2010 (e Visual Studio 2010) conseguíamos filtrar os testes a serem executados na integração contínua utilizando “test lists“. Na versão 2012 do Team Foundation Server e Visual Studio a funcionalidade de “test lists” foi marcada como incompatível (mas ainda funcionava). Porém, ao migrarmos para a versão 2013 tivemos a surpresa que o suporte às “test lists” foi completamente removido. E agora, como fazer para filtrar os testes que serão executados na integração contínua do Team Foundation Server 2013?
A atualização para a versão 2013 do Team Foundation Server foi um pouco tensa devido a essa remoção de funcionalidades. Outra funcionalidade que foi removida e que eu já comentei aqui no blog foram os “private accessors“. Veja o trecho da documentação que fala que as “test lists” não são mais suportadas:
You will no longer be able to create new test lists (.vsmdi files) or run test lists from Visual Studio.
A sugestão apresentada pela documentação é utilizarmos “test categories“. E isso é o que vamos ver nessa dica rápida.
Basicamente temos que inventar um nome de uma categoria (por exemplo “IgnorarNaIntegracaoContinua“) e decorar os testes unitários que queremos ignorar utilizando essa categoria (com o atributo TestCategory). Exemplo:
[TestMethod, TestCategory("IgnorarNaIntegracaoContinua")] public void TesteQueVoceQuerIgnorarNaIntegracaoContinua() { }
Faça o mesmo com todos os testes que você quiser ignorar na integração contínua. Feito isso, vá até a definição da build e abra a seção “Process“. Dentro do item “Test“, expanda o item “Automated tests” e “Test source“. Lá você vai encontrar o item chamado “Test case filter“. É ali que temos que colocar a expressão dizendo que queremos ignorar aquela categoria de testes na integração contínua:
Como você pode perceber, a expressão do filtro para os testes é muito simples:
TestCategory != IgnorarNaIntegracaoContinua
Esse foi só um exemplo muito simples de “test case filter“. É possível utilizarmos outros operadores e outras informações para filtrarmos os testes a serem executados na integração contínua. Confira este outro artigo para conferir uma lista completa do que pode ser utilizado nos filtros da integração contínua. E sugiro ainda que você dê uma olhada neste outro artigo para conferir como utilizar as categorias de testes na ferramenta de execução de testes do Visual Studio. O “test case filter” é considerado não somente em builds que estejam configurados como integração contínua, mas também builds manuais, rolling builds, gated check-in e builds por agendamento.
E por hoje é só. Espero que essa dica rápida ajude outras pessoas que tiverem a necessidade de filtrar testes na integração contínua do TFS.
Até a próxima!
André Lima
Utilizando expressões no Report Viewer Dica rápida: Compactar mdb (Microsoft Access) programaticamente com C#