visual test studio setup run net code c# .net nunit xunit

c# - test - nUnit vs xUnit?



xunit test setup (4)

Un beneficio de xUnit es que encuentra pruebas en diferentes clases, las ejecuta en paralelo . Esto puede ahorrar mucho tiempo si tiene muchos casos de prueba.

Por supuesto, puede desactivar esto o controlar su funcionamiento (cantidad de hilos, hilos por clase, pruebas por ensamblaje, etc.)

Echa un vistazo a esta solución de ejemplo con dos proyectos de prueba, uno usando xUnit el otro NUnit

Puedes leer más sobre pruebas paralelas en xUnit here

¿Dónde están 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 de unidades para .NET Framework. Escrito por el inventor original de NUnit.

En otra mano:

NUnit es un marco de prueba de unidad 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 de unidad basada en xUnit

Entonces, ¿dónde está la verdad?


xUnit Pros: xUnit sigue un nuevo concepto al evitar los viejos "SetUp" y "TearDown" mehtods. Nos obliga a usar IDisposable y constructor como deberíamos hacerlo como desarrolladores de .NET. También xUnit tiene un concepto claro para compartir el contexto.

Contras xUnit: la disponibilidad para obtener el contexto de prueba aún no está implementada.


xUnit.net el nombre de una sola herramienta ( xUnit.net ) con el nombre de toda una clase de marcos de prueba de unidades ( xUnit , la x se refiere a un idioma / entorno, por ejemplo, JUnit, NUnit, ...).


Las respuestas son un poco antiguas, así que decidí proporcionar una actualización: Al momento de escribir esta respuesta, la última versión de NUnit es v3.5 y xUnit.net es v2.1

Ambos marcos son impresionantes, ambos admiten la ejecución de pruebas paralelas (aunque de una manera diferente), NUnit ha existido desde 2002, es ampliamente utilizado, está bien documentado y tiene una gran comunidad, mientras que xUnit.net es más moderno, más TDD Adherente y más extensible y también tendencia en el desarrollo del núcleo .net. 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 los métodos de prueba, lo que es una mala práctica, ya que nuestros métodos de prueba dependerían 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.

De acuerdo con la diferencia mencionada acerca de la instanciación de clase de prueba, la función de ejecución de prueba paralela funciona de manera diferente en 2 marcos. En NUnit.net, los métodos de prueba de una sola clase se ejecutarían en un solo hilo (no en paralelo), pero ejecutan las pruebas de cada clase en un hilo diferente. Mientras que xUnit.net no tiene límite en el paralelismo, ya que crea una nueva instancia por método de prueba.