Há alguma sobreposição entre os dois, com certeza. NUnit é o antecessor e, como resultado, mais maduro. A estrutura de teste de unidade C # é mais jovem, mas integrada ao Visual Studio.
Eu vim do mundo Java, onde o JUnit é o rei (existem outros, mas nenhum tão popular), e o NUnit 2.5.x é uma combinação muito boa com a maneira como o JUnit 4 funciona. De fato, funciona muito melhor que o equivalente em Java.
No que diz respeito à definição de teste, sou a favor do NUnit. Claro que o MS Test possui atributos semelhantes (mas diferentes) que você aplica às suas aulas, mas acredito que faltam alguns recursos que podem poupar algum trabalho em alguns tipos de teste. Você pode querer conferir uma discussão semelhante no StackOverflow .
Gosto do novo modelo de asserção incorporado ao NUnit (ele está usando o estilo Hamcrest ), porque eles são fáceis de ler e facilmente extensíveis.
- O NUnit terá melhor suporte de terceiros, o MS Test terá melhor integração (pronto para uso).
- O NUnit terá melhor flexibilidade e extensibilidade, o MS Test sofrerá nessa área.
- Ambos executam testes de unidade e verificam seus resultados, ambos funcionarão para TDD.