Pergunta

Estou interessado em ver se eu posso melhorar a forma como usamos NUnit em uma solução Visual Studio contendo mais de 30 projectos.

Primeiro, você teria um conjunto de testes para cada montagem na solução, ou você tente manter o número de conjuntos de teste para baixo? Comecei a criação de muitos conjuntos de teste, mas eu acho que isso é custar-nos muito em termos de tempo de compilação.

Em segundo lugar, qual a estratégia que você usa para gerenciar esses testes que são de longa duração, ou exigir configuração especial ambiente? Eu gostaria de escrever um script MSBuild que automatiza a execução de nossos testes de unidade, mas ele precisa pular os testes que levaria muito tempo ou não iria funcionar na máquina de compilação.

Foi útil?

Solução

Para responder à sua primeira pergunta:

Você pode usar categorias para manter tudo organizado em um montagem de solteiro, se é assim que você quer ir. Quanto a saber se ele iria reduzir o tempo de construção, eu arriscaria um palpite sobre talvez, eu não acho que seria uma quantidade enorme geral embora.

Para responder à sua segunda:

Você pode usar categorias e [Explicit] e [Ignore] atributo para dizer NUnit que testes a serem executados, e que testa você tem que dizer que ele seja executado antes que ele vai. Você também pode querer olhar para [Platform] ou alguns dos outros atributos, dependendo do que exatamente suas necessidades no 'ambiente' são.

Por exemplo, você pode adicionar uma tag explícita a todos os seus testes de longa execução. Então você teria que executar esses testes de forma explícita, NUnit não vai executá-los automaticamente. Ou adicionar todos esses testes a uma categoria, em seguida, quando você executar NUnit, diga-se não explicitamente executar nessa categoria.

Outras dicas

Para o seu caso eu iria colocá-lo para baixo a algumas opções:

  • Consolidar seus projetos existentes para menos queridos, consequentemente consolidar projetos de teste correspondente para eles - Tente pensar se você realmente precisa de 30 projectos (por exemplo, 30 assembleias) ou se é melhor simplesmente combiná-los para facilitar o número de dependências e tempo de compilação.

  • Coloque seus testes em seu projeto correspondente - Embora isso possa provocar uma reação violenta, pense nisso: considerando o grande número de testes envolveram a sobrecarga de conseguir um pouco maior de montagem pode ser vale a pena a redução da sobrecarga de gerenciamento de duas vezes o número de projetos que você realmente precisa.

  • Misture todos os testes de unidade em alguns projetos - Se você é inflexível sobre manter cada conjunto limpo e separado, você pode simplesmente optar por combinar todos os testes de unidade, provavelmente em termos de relevância com o outro.

Por isso você também pode fazer configurações de solução que não incluem testes de unidade - se o tempo de construção é tanto uma preocupação para você. Isto é especialmente útil se você está apenas executando testes na demanda . Se você estiver usando a integração contínua, não deve ser um problema:. Você pode ter várias configurações CI, alguns que incluem testes de construção, alguns que não o fazem

Esta é uma grande pergunta e levanta algumas preocupações que eu tenho sobre o gerenciamento de grande conjunto de testes de unidade para longa duração, grandes projetos.

A minha estratégia é ter projeto de teste uma unidade para cada projeto em sua solução que é negócio ou estrutura relacionada. Os testes unitários são mal adequado para testar os aspectos de interface do usuário de um projeto e eu geralmente deixar isso para testes scipted. O projeto é construído usando um servidor de integração contínua (CI) que é acionado toda vez que um desenvolvedor comete um pedaço de trabalho. O servidor CI também executa todos os testes de unidade como estatísticas de cobertura de teste de unidade geradora de bem. O ambiente CI utiliza MSBuild para construir a solução.

Com o tempo, vale a pena avaliar se todos os testes de unidade são necessárias. Uma grande parte do esforço de teste regressão se deslocará para o teste guião e a sobrecarga de manutenção testes de unidade pode ser caro. Idealmente, eu gostaria que todos os testes de unidade deve ser mantida ao longo da vida do projecto, mas a sobrecarga de manutenção às vezes pode ser proibitivo. Como uma regra de testes de unidade polegar são mantidas para regras de negócio e da estrutura de solução mas não para UI, relatando ou fluxo de trabalho. Obviamente, isso dependerá das particularidades do seu projeto.

Apenas como um aparte, encontramos TestDriven.Net ser um excelente VisualStudio add-in front-end para NUnit , livre para open source de uso / estudantes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top