2012-03-19 390 views
23

¿Dónde están las diferencias entre nUnit y xUnit.net? ¿De qué sirve desarrollar dos de ellos, no solo uno?nUnit vs xUnit?

He leído que xUnit está siendo desarrollado por el inventor de nUnit:

xUnit.net es una herramienta de pruebas unitarias para .NET Framework. Escrito por el original inventor de NUnit

En otra parte:

NUnit es un marco de pruebas de unidad para todos los lenguajes .NET .. la liberación producción actual, versión 2.6 , es la séptima versión principal de esta xUnit basado en la herramienta de prueba de la unidad

Entonces, ¿dónde está la verdad?

+1

http://xunit.codeplex.com/wikipage?title=WhyDidWeBuildXunit&referringTitle=Home – wiero

+2

Como ha señalado @Joey, este no es un duplicado directo de la pregunta vinculada. En este caso, el OP ha malentendido fundamentalmente algo; a saber, la diferencia entre xUnit.net - la herramienta de pruebas de unidades y * x * Unidad - el término generalizado para la clase de marcos de prueba de unidades (nUnit, jUnit, etc.). Votando para reponer –

Respuesta

19

Estás confundiendo el nombre de una sola herramienta (xUnit.net) con el nombre de una clase entera de frameworks de pruebas unitarias (xUnit, la x en referencia a un lenguaje/medio ambiente, por ejemplo JUnit, NUnit, ...)

+1

Lástima que esto se cerró, ya que no es un duplicado directo, tienes razón, el OP se ha confundido entre dos términos que son casi lo mismo. –

+0

He cambiado ligeramente el título, para asegurarme de que no haya confusión. – Ruslan

+1

No fui por el título sino por los segmentos destacados de las citas en su pregunta. Pero tal vez te malentendí. – Joey

0

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

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

0

Uno de los beneficios de xUnit es que encuentra pruebas en diferentes clases, las ejecuta en paralelo. Esto puede ahorrarle mucho tiempo si tiene muchos casos de prueba.

Por supuesto, puede desactivar esta opción, o controlar su funcionamiento (número de hilos, hilos por clase, en pruebas por conjunto, etc

Control hacia fuera este sample solution with two test projects, one using xUnit the other NUnit

Usted puede leer más sobre las pruebas paralelas en xUnit here

6

respuestas son un poco viejo, así que decidí dar una actualización: en el momento de escribir este responde a la última versión NUnit es v3.5 y v2.1 es xUnit.net

Ambos frameworks son geniales, ambos soportan ejecución de prueba paralela (de otra manera), NUnit ha existido desde 2002, es ampliamente usado, bien documentado y tiene una gran comunidad, mientras que xUnit.net es más moderno, más adherente TDD y más extensible y también tendencia en desarrollo 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.Por lo tanto, 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 todo el método 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 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 usas xunit.net, puedes estar seguro de que tus 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, es por eso que me gusta más.

Según la diferencia mencionada sobre la creación de instancias de clase de prueba La característica 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 ejecuta las pruebas de cada clase en un hilo separado. Mientras que xUnit.net no tiene límite en el paralelismo, ya que crea una nueva instancia por método de prueba.

+0

Para más detalles, consulte mi última publicación: https://codopia.wordpress.com/2017/02/20/xunit-net-vs-nunit-a-pragmatic-comparison/ – akazemis