¿Cuáles son las diferencias entre NUnit y xUnit.net ? ¿Cuál es el punto de desarrollar dos de ellos, no solo uno?
He leído que xUnit está siendo desarrollado por el inventor de NUnit:
xUnit.net es una herramienta de prueba unitaria para .NET Framework. Escrito por el inventor original de NUnit
Por otra parte:
NUnit es un marco de pruebas unitarias para todos los lenguajes .Net. La versión de producción actual, la versión 2.6, es la séptima versión principal de esta herramienta de prueba unitaria basada en xUnit
Entonces, ¿dónde está la verdad?
Respuestas:
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.
fuente
Estás confundiendo el nombre de una sola herramienta ( xUnit.net ) con el nombre de toda una clase de marcos de prueba unitarios ( xUnit , la x se refiere a un lenguaje / entorno, por ejemplo, JUnit, NUnit, ...).
fuente
Ventajas de xUnit:
xUnit sigue un nuevo concepto al evitar los métodos antiguos "SetUp" y "TearDown". Nos obliga a usar IDisposable y un constructor como deberíamos hacer como desarrolladores .NET. Además, xUnit tiene un concepto claro de intercambio de contexto.
Contras de xUnit:
La disponibilidad para obtener el contexto de prueba aún no está implementada.
fuente
Un beneficio de xUnit es que encuentra pruebas en diferentes clases; los ejecuta en paralelo . Esto puede ahorrarle mucho tiempo si tiene muchos casos de prueba.
Por supuesto, puede desactivar esto o controlar su funcionamiento (número de subprocesos, subprocesos por clase, pruebas por ensamblaje, etc.
Vea esta solución de muestra con dos proyectos de prueba, uno usando xUnit y el otro NUnit .
Puede leer más sobre las pruebas paralelas en xUnit aquí .
fuente