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.