Qual é a melhor estrutura de teste de unidade para .NET e por quê? [fechadas]

26

Parece-me que todo mundo usa o NUnit sem sequer considerar as outras opções. Eu acho que isso é porque:

  • Todo mundo já está familiarizado com isso, então eles não terão que aprender uma nova API.
  • Já está configurado com o servidor de integração contínua para trabalhar com o NUnit.

Estou errado sobre isso?

Decidi usar o xUnit em um dos meus próprios projetos recentemente e adoro! Faz muito mais sentido para mim e, conceitualmente, parece um passo definitivo da NUnit.

Eu gostaria de ouvir opiniões sobre qual estrutura é realmente a melhor - sem levar em consideração a necessidade de aprendê-la ou reconfigurar seu teste automatizado.

Ninguém
fonte
6
Por favor, defina melhor. Mais barato? mais fácil de codificar? menos linhas de código por teste? stackoverflow.com/questions/680298/…
Amir Rezaei
Desculpe, eu quis dizer mais poderoso, estável e intuitivo, qualquer que seja. Estou pedindo opiniões e razões pelas quais . Deixei o 'melhor' para a imaginação do respondente, porque também gostaria de ver quais desses aspectos são importantes para as pessoas.
Ninguém
2
Se você pode reformular sua pergunta, pode ser que esteja OK; caso contrário, essa é apenas uma questão da "lista de X" que não é construtiva. Veja seis diretrizes para questões subjetivas construtivas
ChrisF
2
"melhor" é uma coisa idiota de se perguntar - porque muito raramente existe uma única melhor, em parte porque dependerá do contexto e, em parte, porque é inevitavelmente, em algum grau, subjetiva.
Murph
10
Murph. Primeiro, este site é para perguntas subjetivas. Segundo, eu estou pedindo opiniões, então eu gostaria de ver a interpretação dos outros de 'melhor'. E não me chame de idiota.
Ninguém

Respostas:

15

MSTest

Eu pessoalmente uso o MSTest. O NUnit é muito bom, mas no VS2010, o MSTest já está totalmente integrado ao IDE e existem modelos de projeto completos para ele. Para o .NET, se você estiver usando o 2010, acho que o MSTest é o caminho a seguir (o MSTest no VS2008 não acho que esteja em pé de igualdade) simplesmente pela cobertura do código, pelo executor de testes e por outras ferramentas disponíveis. sai da caixa. (Se você usa o CodeRush ou o R #, eles têm excelentes ferramentas / corredores de teste para outras estruturas de teste)

Edit: Eu já mudei para o XUnit. : D

Ryan Hayes
fonte
Votei no MbUnit / Galio e nesta resposta. O MbUnit / Galio é simplesmente melhor, mas suas mãos estão atadas quando se trata de executar testes MsTest, pois algumas classes críticas nessa biblioteca .Net são finais e não são extensíveis. No entanto, se você precisar fazer a automação da GUI, a UI codificada e o cuite.codeplex.com/documentation funcionarão sobre o MsTest, portanto, é necessário apenas usá-los.
Job
2
O problema que tenho com o MSTest é que ele não suporta nativamente o teste de linha de comando; isso pode ser um problema quando você deseja executar unidades via CI.
CmdrTallen
1
Nunit agora é totalmente integrável no VS, certo?
BKSpurgeon
Sim, é sim. Considerando que isso tem cerca de 6 anos, mudei pessoalmente para o NUnit e agora para o XUnit. Ambos (e outros) têm pacotes de nuget que servem como adaptadores para iluminar a mesma funcionalidade do VS do MSTest. Honestamente, o MSTest provavelmente está no final da lista neste momento. Eu votaria XUnit ou NUnit. hoje em dia, como ambos são sólidos, mantidos e modernos.
Ryan Hayes
14

Comecei a usar o Gallio / MbUnit há vários anos. E os recursos e jóias que ele fornece são tão poderosos que nunca me arrependi da minha escolha. De fato, agora faço parte da equipe de desenvolvimento do projeto Gallio OSS; para que eu possa contribuir para torná-lo ainda mais incrível.

  • O MbUnit possui muitos recursos poderosos que facilitam a vida do desenvolvedor (verificadores de contrato, fábricas de teste, comparador de igualdade estrutural, testes combinatórios, estrutura de geração de dados, difusão de texto, asserções xml, pontos de extensão etc.)
  • O Gallio fornece uma plataforma consistente para executar todos os meus testes com uma boa ferramenta de relatórios. Também gosto do fato de poder integrar testes de outros projetos OSS que não usam o MbUnit e apenas executá-los. A integração perfeita em muitas ferramentas de terceiros também é conveniente (R #, PoSh, dotCover etc.) E a extensibilidade da infraestrutura é incrível (por exemplo, acabei de escrever um adaptador de teste para uma estrutura de teste C ++ não gerenciada nativa (Fará parte de uma versão futura em breve)

O wiki é certamente um bom ponto de partida para descobrir o Gallio e o MbUnit v3. Ainda falta alguns capítulos, mas já é bastante útil.

Yann Trevin
fonte
O comparador de igualdade estrutural e a estrutura de geração de dados são ótimos. O MbUnit pode fazer testes orientados a dados - isto é, ler arquivos csv / xsd e usá-los como argumentos do método de teste? Essa é uma das principais atrações do xunit para mim.
21411 Ninguém mais
Certo. O ASAIK MbUnit foi a primeira estrutura de testes do .NET a introduzir testes orientados a dados. Ele pode vincular parâmetros de teste a fontes de dados internas ([Linha], [Coluna] etc.) e externas ([CsvData], [XmlData] etc.). Mais detalhes aqui: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Yann Trevin
Eles resolveram os problemas de desempenho que estavam tendo com o Gallio e o visual studio? Foi o negócio assassino para nós.
Wyatt Barnett
Usei o MbUnit quando trabalhei para uma pequena empresa e foi ótimo! Mais tarde, usei o MsTest porque precisava, e funcionou bem. Eu ainda prefiro escrever código explícito do que definir as configurações do projeto. Porém, o apoio corporativo ajuda o MSTest. Seja o design feio ou bonito, você sabe que tudo o que sai do MSFT será bem testado.
Job
@YannTrevin Qual é o status do Gallio / MbUnit? Eu olhei para o repositório do Google Code e ele não parece ter alterações recentes. O desenvolvimento está acontecendo em outro lugar ou o projeto está parado?
Wesley Wiser
9

Escolher um e usá-lo é talvez o passo mais importante aqui.

Pessoalmente, eu escolheria o NUnit por alguns motivos. Primeiro e acima de tudo, é o suporte de ferramentas. Há um suplemento gratuito para o Visual Studio 2010 e todos os principais plug-ins de terceiros são compatíveis. Todos os sistemas de compilação, utilitários de cobertura de teste e servidores de CI são compatíveis. Em muitos casos, sem um plugin. No nível do código, ele pode lidar com praticamente qualquer cenário neste momento - testes orientados a dados, herança, classes de teste abstratas, classes de teste genéricas, configuração, desmontagem etc. Até certo ponto, temos o xUnit porque o NUnit ficou muito rico em recursos e poderoso.

Além da NUnit, acho que você poderia argumentar bastante bem sobre o MBUnit + Gallio, como mencionado por Yann - é uma estrutura muito sólida. O que você deve evitar, se possível, seria o MSTest, que possui algumas falhas fatais no IMHO. Falhas são algumas das restrições em suas classes de teste, como nenhuma herança e dependências de SKUs profissionais ou melhores do visual studio. Incluindo a necessidade de instalação do visual studio no servidor de compilação para executar os testes.

Wyatt Barnett
fonte
0

O único motivo é NUNIT se tornar mais padrão do setor que xUnit. Mas, pessoalmente, eu amo xunit.

Cheung
fonte