Pergunta

Eu li e outra vez que TDD/teste primeiro é mais difícil com o MSTest que está com outras estruturas de teste, tais como o nUnit, o mbunit, etc...Quais são algumas sugestões de soluções alternativas manuais e/ou festa de 3 bits que você sugere quando MSTest é a única opção, devido à política de infra-estruturas?Eu sou principalmente se perguntando sobre o VS 2008 Team Suite, mas eu suponho dicas para o VS 2008 Pro em até seria muito adequado, pois alguns MSTest funcionalidade agora está incluído com as versões bem.

Foi útil?

Solução

MSTest certamente não é tão eficiente ou extensible como alguns dos frameworks open source, mas é viável.Uma vez que a questão pergunta sobre como tornar a vida mais fácil com MSTest e não sobre alternativas, aqui estão os meus MSTest dicas.

  • Atalhos.Como Ocriadofalante disse, demorar alguns segundos para aprender os atalhos.
  • Contexto Atual.Desde MSTest é tão lento, executar testes apenas no contexto atual, quando você pode.(CTRL+R, CTRL+T).Se o cursor estiver em um método de teste, isto só irá executar o método.Se o cursor estiver fora de um método, mas em uma classe de teste, isto só irá executar o teste.E com o espaço de nomes, etc etc
  • Eficiente testes e organização.É cão lento.Fazer as coisas o melhor que você pode escrevendo eficiente testes.Movimento lento testes para outros testar classes ou projetos, assim você pode executar o rápido testes com mais freqüência.
  • Testes com WCF.Se você está de serviços de testes, certifique-se de testes de DEPURAÇÃO, em vez de EXECUTAR testes para que o Visual Studio pode disparar até o ASP.NET desenvolvimento de servidores web.Após estas são, então você pode voltar a EXECUTAR, mas não pode ser mais fácil para sempre DEPURAÇÃO, assim você não tem que pensar sobre isso.
  • Arquivos De Configuração.Editar o teste de gerência de configuração para mover .os arquivos de configuração para a execução do teste de pasta.
  • Integração com o Source Safe.Você precisa estar ciente de que MSTest odeia SourceSafe e o sentimento é mútuo.Porque MSTest quer colocar arquivos de teste sob controle de origem, e adicioná-los para a solução, deve-se verificar para fora a solução a cada vez que você executar os testes.Assim SourceSafe deve ser executado em multi-check-out modo a evitar matar seus colegas desenvolvedores.
  • Ignorar o buço Com MSTest, você tem uma dúzia de diferentes janelas e vistas.Execução De Teste, Teste De Visão, Teste De Listas ...todos eles são menos do que útil.Ficar com Resultados de Teste e você será muito mais feliz.
  • Ficar com "Testes de Unidade".Quando você adicionar um novo teste, você pode adicionar um teste ordenado, um teste de unidade, ou de execução através de um assistente.Ficar com apenas simples testes de unidade.

Outras dicas

Se você não tem nenhuma escolha mas para usar MSTest, aprender os atalhos de teclado.Eles vão tornar sua vida um pouco mais fácil.

Teste no Contexto Atual: CTRL+R, T
Todos os Testes na Solução: CTRL+R, Um

Testes de depuração no Contexto Atual: CTRL+R, CTRL+T
Depuração de Todos os Testes de Solução: CTRL+R, CTRL+Um

Estou curioso aqui.O que eu não entendo é que as pessoas começam a comparação de todas as ferramentas de código Aberto disponíveis com MSTest e começar batendo nele.Comentando sobre o quão pesado ele é, como unintiuitve etc.IMHO, é porque é fundamentalmente diferente do xUnit quadros.Ele é otimizado para a execução em paralelo.

Até mesmo o qurik de ter estático ClassInitialze e Limpeza e tendo exclusivo TestContext para cada um dos testes, tudo por causa da nextgen - pelo menos para o Windows negócios programadores em idiomas MS - paralelo progarmming conceitos.

Eu tive a infelicidade de trabalhar em um projeto com dezenas de milhares de testes de unidade.Eles costumavam levar praticamente a maioria do tempo de compilação!Com MSTest, vamos cortar esse muito gerenciáveis prazos.

A minha colega, Mike Hadlow tem resumo muito bom por nós totalmente avesso MSTest aqui.

Ele conseguiu removê-lo a partir de seu projeto, mas atualmente estou trabalhando em um projeto maior, com mais política envolvida por isso ainda estamos usando ele.

O resultado é que quem implementado MSTest não entende TDD.Desculpe som como uma M$ brito - eu realmente não sou.Mas eu estou irritado que eu estou tendo de aturar uma má ferramenta.

Eu não vi nenhum problemas graves com o MSTest.O que, especificamente, você está falando?Estamos, na verdade, afastando-se o NUnit para MSTest.Eu não sei nossas razões para isso, no entanto.

Há uns lotes de arquivos de configuração com o mstest, tornando-a menos propicio.
Outra razão pela qual eu escolhi o mbunit, é a "reversão" de o mbunit.Isso permite que você para reverter todo o banco de dados coisas feitas neste teste, de modo que você pode realmente fazer o circuito completo de testes e não se preocupar com a lagoa de estar contaminado após o teste.
Também a falta de RowTest instalações em mstest.

Sugiro apenas executando o mbunit como uma dependência dentro do processo de compilação, é fácil o suficiente para flutuar com sua bandeja, e de referência, sem a necessidade de instalação.

  • MSTest tem "alta fricção":Chegando um script de compilação com NAant e o mbunit comparado com MStest e o MSBuild.Nenhum Comparação.
  • MSTest é Lento o mbunit e o NUnit estão na minha experiência mais rápido (gálio pode ajudar aqui)
  • MStest adiciona um monte de coisas que eu não preciso de como com fio arquivos de configuração, etc.
  • MSTest não tem o fetaure conjunto de outros SO estruturas de teste.confira xUnit e o mbunit

É muito difícil de usar e há muitas opções melhores.

como mencionado oyu precisa para instalar o IDE para usar o MSTest em outra máquina, que é um pouco porcaria.Acho que é porque eles querem ter certeza de que testes de unidade só funciona na extremidade superior visual studios e você sholdné ser capaz de executá-los de qualquer outra forma.

Também, MSTest é bastante lento, é porque entre cada teste que recria todo o contexto para cada teste, isso faz o0ne a certeza de que um ex-teste - falha ou caso contrário não será influência do teste atual, mas atrasa as coisas.no entanto, você pode usar o /noisolation bandeira, que irá executar todos os testes dentro do MSTest processo - que é mais rápido.Para acelerar no IDE:No VS ide, você pode ir em Ferramentas-Opções, em seguida, selecione Ferramentas de Teste.Seleccione o sub-item chamado a execução do Teste e em dialouge para a direita, certifique-se de que a caixa de seleção chamada "Manter a execução do teste de funcionamento do motor entre os testes" está marcada.

Para responder a um não-apontou pergunta, a minha resposta seria "provavelmente NUnit só fica no seu rosto."

Isenção de responsabilidade:Eu não tenho nenhuma experiência real com o MS versão do xUnit, no entanto eu ouço problemas como: 'Você precisa para instalar o gigantesco idéia apenas para executar testes em uma máquina separada' - que é um não-Não.Outros, que o MS tem esse jeito de contorcendo o caminho certo para um novato através de algum tipo de IDE bell/apito que vai contra a ideia.Como a geração de testes a partir de classes era uma que eu lembro de um ano, ou então, de volta..que destrói o ponto de teste de condução - seu design é suposto a surgir a partir de pequenos passos da RGR:a criação de um teste-fazer passar refatorar.Se você usar a ferramenta de rouba-lhe toda a experiência.

Eu vou parar com meu sermão..agora :)

Eu fiz TDD desenvolvimento usando o NUnit para um número de anos e têm vindo a utilizar MSTest por cerca de 4 meses, agora, devido a uma alteração de função.

Eu não acho que MSTest deixa alguém de fazer TDD.Você ainda tem todos os principais coisas que você precisa para TDD, tais como basic afirma e estruturas de simulação (eu uso o Rhino Mocks).

MSTest, apesar de integrar estreitamente com o Visual Studio, o melhor componente desta integração é a Ferramenta de Cobertura de Código que é construído em.

MAS Há um número de razões não para usar MSTest.Os dois maiores turn off", em minha opinião são:

  1. A falta de afirmar opções (em comparação com o NUnit)
  2. O lento test runner (lento, em comparação com o NUnit)

Isso significa que a escrita afirma leva mais de código em combinação com um lento test runner significa que todo o processo é mais lento do que o NUnit.O open source também tem um suporte muito mais na comunidade.

Se você estiver usando o TFS para o CI, em seguida, você vai precisar de saltar através de alguns aros/hacks para obter o NUnit para publicar os resultados do teste.Execução de testes no TFS com MSTest, em comparação, é muito fácil e direta.Se você não toque TFS que eu iria NUnit todo o caminho, é só mais agradável.

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