Pergunta

Visual Studio folder structure

Preciso de alguns conselhos sobre como posso separar facilmente execuções de testes para testes de unidade e testes de integração no Visual Studio.Freqüentemente, ou sempre, estruturo a solução conforme apresentado na imagem acima:projetos separados para testes unitários e testes de integração.Os testes de unidade são executados com muita frequência, enquanto os testes de integração são executados naturalmente quando o contexto está alinhado corretamente.

Meu objetivo é, de alguma forma, configurar quais testes (ou pastas de teste) serão executados quando eu usar um atalho de teclado.Os testes devem ser executados preferencialmente por um executor de testes gráficos (ReSharpers).Então por exemplo

  • Alt+1 executa os testes no projeto BLL.Test,
  • Alt+2 executa os testes no projeto DAL.Tests,
  • Alt+3 executa ambos (ou seja,todos os testes na pasta [Testes], e
  • Alt+4 executa os testes na pasta [Tests.Integration].

TestDriven.net tem a opção de executar apenas o teste na pasta ou projeto selecionado clicando com o botão direito e selecionando Executar teste(s).Ser capaz de fazer isso, mas por meio de um comando de teclado e com um executor de teste gráfico seria incrível.

TestDriven.net test run output

Atualmente utilizo VS2008, ReSharper 4 e nUnit.Mas conselhos para uma configuração em geral também são apreciados.

Foi útil?

Solução

Na verdade, encontrei uma solução para isso sozinho, usando o comando do teclado vinculado a uma macro.A macro foi gravada no menu Ferramentas>Macros>Gravar Macro Temporária.Durante a gravação, selecionei minha pasta [Testes] e executei ReSharpers UnitTest.ContextRun.Isso resultou na seguinte macro,

Sub TemporaryMacro()
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate
    DTE.ActiveWindow.Object.GetItem("TestUnitTest\Tests").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ExecuteCommand("ReSharper.UnitTest_ContextRun")
End Sub

que foi então vinculado ao seu próprio comando de teclado em Ferramentas>Opções>Ambiente>Teclado.

No entanto, o que seria ainda mais incrível é uma solução mais geral onde eu possa configurar exatamente quais projetos/pastas/classes executar e quando.Por exemplo, por meio de um arquivo xml.Isso poderia então ser facilmente verificado no controle de versão e distribuído para todos que trabalham com o projeto.

Outras dicas

Esta é uma solução um pouco complicada, mas você pode configurar alguns ferramentas externas para cada grupo de testes que você deseja executar.Não tenho certeza se você conseguirá iniciar o executor de testes do ReSharper dessa maneira, mas poderá executar a versão de console do nunit.Depois de configurar essas ferramentas, você pode atribuir atalhos de teclado aos comandos "Tools.ExternalCommand1", "Tools.ExternalCommand2", etc.

Isso não será muito bem dimensionado e é difícil de alterar - mas fornecerá atalhos de teclado para executar seus testes.Parece que deveria haver uma maneira muito mais simples de fazer isso.

Você pode usar uma macro VS para analisar o arquivo XML e, em seguida, chamar nunit.exe com o argumento de linha de comando /fixture para especificar quais classes executar ou gerar um arquivo de salvamento de seleção e executar nunit usando-o.

Nunca usei isso, mas talvez possa ajudar....

http://www.codeplex.com/VS2008UnitTestGUI

"Descrição do projeto Este projeto é sobre executar todo o teste de unidade dentro de múltiplos testes de unidade .NET codificada com o Visual Studio 2008".

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