En el momento de escribir esta respuesta, la última versión de NUnit es v3.5 y xUnit.net es v2.1.
Ambos marcos son impresionantes y ambos admiten la ejecución de pruebas en paralelo (aunque de una manera diferente). NUnit existe desde 2002, se usa ampliamente, está bien documentado y tiene una gran comunidad, mientras que xUnit.net es más moderno, más adherente a TDD, más extensible y también una tendencia en el desarrollo de .NET Core. También está bien documentado.
Además de eso, la principal diferencia que noté es la forma en que xUnit.net ejecuta los métodos de prueba. Entonces, en NUnit , tenemos una clase de prueba y un conjunto de métodos de prueba. NUnit crea una nueva instancia de la clase de prueba y luego ejecuta todos los métodos de prueba desde la misma instancia. Mientras que xUnit.net crea una nueva instancia de la clase de prueba para cada uno de los métodos de prueba. . Por lo tanto, no se pueden usar campos o propiedades para compartir datos entre métodos de prueba, lo cual es una mala práctica, ya que nuestros métodos de prueba serían dependientes entre sí, lo que no es aceptable en TDD. Entonces, si usa xunit.net, puede estar seguro de que sus métodos de prueba están completamente aislados.
Sin embargo, si está dispuesto a compartir algunos datos entre sus métodos de prueba, xUnit le permitirá hacerlo. Por lo tanto, de forma predeterminada, todos los métodos de prueba están completamente aislados, pero puede romper este aislamiento en casos específicos intencionalmente. Me gusta esta actitud, por eso me gusta más.