Quais são as diferenças entre NUnit e xUnit.net ? Qual é o objetivo de desenvolver dois deles, não apenas um?
Eu li que o xUnit está sendo desenvolvido pelo inventor do NUnit:
xUnit.net é uma ferramenta de teste de unidade para o .NET Framework. Escrito pelo inventor original do NUnit
Por outro lado:
NUnit é uma estrutura de teste de unidade para todas as linguagens .Net .. a versão de produção atual, versão 2.6, é a sétima versão principal desta ferramenta de teste de unidade baseada em xUnit
Onde está a verdade?
Respostas:
No momento em que escrevo esta resposta, a versão mais recente do NUnit é v3.5 e xUnit.net é v2.1.
Ambos os frameworks são fantásticos e ambos suportam a execução de testes paralelos (embora de uma forma diferente). O NUnit existe desde 2002, é amplamente usado, bem documentado e tem uma grande comunidade, enquanto o xUnit.net é mais moderno, mais aderente ao TDD, mais extensível e também tendência no desenvolvimento do .NET Core. Também está bem documentado.
Além disso, a principal diferença que percebi é a maneira como o xUnit.net executa os métodos de teste. Portanto, em NUnit , temos uma classe de teste e um conjunto de métodos de teste nela. NUnit cria uma nova instância da classe de teste e então executa todos os métodos de teste da mesma instância. Considerando que xUnit.net cria uma nova instância da classe de teste para cada um dos métodos de teste. . Portanto, não se pode usar campos ou propriedades para compartilhar dados entre métodos de teste, o que é uma prática ruim, pois nossos métodos de teste seriam dependentes uns dos outros, o que não é aceitável em TDD. Portanto, se você usar o xunit.net, poderá ter certeza de que seus métodos de teste estão completamente isolados.
Se você estiver disposto a compartilhar alguns dados entre seus métodos de teste, o xUnit permitirá que você faça isso. Portanto, por padrão, todos os métodos de teste são completamente isolados, mas você pode interromper esse isolamento em casos específicos intencionalmente. Eu gosto dessa atitude, é por isso que gosto mais dela.
fonte
Você está confundindo o nome de uma única ferramenta ( xUnit.net ) com o nome de uma classe inteira de estruturas de teste de unidade ( xUnit , ax referindo-se a uma linguagem / ambiente, por exemplo, JUnit, NUnit, ...).
fonte
xUnit Pros:
O xUnit segue um novo conceito, evitando os antigos métodos "SetUp" e "TearDown". Isso nos força a usar IDisposable e um construtor como deveríamos fazer como desenvolvedores .NET. Além disso, o xUnit tem um conceito claro de compartilhamento de contexto.
xUnit Cons:
A disponibilidade para obter o contexto de teste ainda não foi implementada.
fonte
Um benefício do xUnit é que ele encontra testes em classes diferentes; ele os executa em paralelo . Isso pode economizar muito tempo se você tiver muitos casos de teste.
Você pode, é claro, desligar isso ou controlar sua operação (número de threads, threads por classe, testes por montagem, etc.
Confira esta solução de amostra com dois projetos de teste, um usando xUnit e o outro NUnit .
Você pode ler mais sobre testes paralelos no xUnit aqui .
fonte