NUnit es un marco de pruebas unitarias de código abierto para .NET Framework y Mono . Tiene el mismo propósito que JUnit en el mundo Java y es uno de los muchos programas de la familia xUnit . [ cita requerida ]
Autor (es) original (es) | Charlie Poole, James Newkirk, Alexei Vorontsov, Michael Two, Philip Craig, Rob Prouse, Simone Busoli, Neil Colvin |
---|---|
Desarrollador (es) | El Proyecto NUnit, .NET Foundation |
Lanzamiento estable | 3.12.0 / 14 de mayo de 2019 |
Repositorio | github |
Escrito en | C# |
Sistema operativo | .NET Framework , Mono |
Tipo | Herramienta de prueba unitaria |
Licencia | Licencia MIT para 3.0, estilo BSD ( licencia zlib modificada ) para 2.x |
Sitio web | www |
Características
- Las pruebas se pueden ejecutar desde un ejecutor de consola, dentro de Visual Studio a través de un Adaptador de prueba, [1] o mediante ejecutores de terceros.
- Las pruebas se pueden ejecutar en paralelo. [2]
- Fuerte soporte para pruebas basadas en datos. [3]
- Admite múltiples plataformas, incluidas .NET Core , [4] Xamarin Mobile , [5] Compact Framework [6] y Silverlight . [7]
- Cada caso de prueba se puede agregar a una o más categorías, para permitir la ejecución selectiva. [8]
NUnit proporciona un corredor de consola (nunit3-console.exe), que se utiliza para la ejecución de pruebas por lotes. El corredor de la consola funciona a través del motor de prueba NUnit, que le brinda la capacidad de cargar, explorar y ejecutar pruebas. Cuando las pruebas se van a ejecutar en un proceso separado, el motor utiliza el programa nunit-agent para ejecutarlas. [ cita requerida ]
El corredor NUnitLite se puede utilizar en situaciones en las que un corredor más simple es más adecuado. Permite a los desarrolladores crear pruebas autoejecutables. [ cita requerida ]
Afirmaciones
NUnit proporciona un rico conjunto de afirmaciones como métodos estáticos de la Assert
clase. Si una aserción falla, la llamada al método no regresa y se reporta un error. Si una prueba contiene varias afirmaciones, no se ejecutará ninguna que siga a la que falló. Por esta razón, generalmente es mejor intentar una afirmación por prueba. [ cita requerida ]
Nunit 3.x admite múltiples afirmaciones.
[Prueba] public void ComplexNumberTest () { ComplexNumber result = SomeCalculation (); Afirmar . Multiple (() => { Assert . AreEqual ( 5.2 , result . RealPart , "Real part" ); Assert . AreEqual ( 3.9 , result . ImaginaryPart , "Imaginary part" ); }); }
Clásico
Antes de NUnit 2.4, Assert
se usaba un método separado de la clase para cada afirmación diferente. Sigue siendo compatible con NUnit, ya que mucha gente lo prefiere. [ cita requerida ]
Cada método de aserción se puede llamar sin un mensaje, con un mensaje de texto simple o con un mensaje y argumentos. En el último caso, el mensaje se formatea utilizando el texto y los argumentos proporcionados. [ cita requerida ]
// La igualdad afirma Afirmar . AreEqual ( objeto esperado , objeto real ); Afirmar . AreEqual ( objeto esperado , objeto actual , mensaje de cadena , objeto params [] parms ); Afirmar . AreNotEqual ( objeto esperado , objeto real ); Afirmar . AreNotEqual ( objeto esperado , objeto actual , mensaje de cadena , objeto params [] parms ); // La identidad afirma Assert . AreSame ( objeto esperado , objeto real ); Afirmar . AreSame ( objeto esperado , objeto real , mensaje de cadena , params objeto [] parms ); Afirmar . AreNotSame ( objeto esperado , objeto real ); Afirmar . AreNotSame ( objeto esperado , objeto real , mensaje de cadena , objeto params [] parms ); // La condición afirma // (Para simplificar, se omiten los métodos con firmas de mensajes) . Afirmar . IsTrue ( condición bool ); Afirmar . IsFalse ( condición bool ); Afirmar . IsNull ( objeto anObject ); Afirmar . IsNotNull ( objeto anObject );Afirmar . IsNaN ( doble aDouble );Afirmar . IsEmpty ( cadena aString ); Afirmar . IsNotEmpty ( cadena aString );Afirmar . IsEmpty ( colección ICollection ); Afirmar . IsNotEmpty ( colección ICollection );
Basado en restricciones
A partir de NUnit 2.4, se introdujo un nuevo modelo basado en restricciones . Este enfoque utiliza un solo método de la Assert
clase para todas las afirmaciones, pasando un Constraint
objeto que especifica la prueba que se realizará. NUnit utiliza ahora este modelo basado en restricciones internamente para todas las aserciones. Los métodos del enfoque clásico se han vuelto a implementar sobre este nuevo modelo. [ cita requerida ]
Ejemplo
Ejemplo de un accesorio de prueba NUnit : [ cita requerida ]
usando NUnit.Framework ; [TestFixture] public class ExampleTestOfNUnit { [Prueba] public void TestMultiplication () { Assert . AreEqual ( 4 , 2 * 2 , "Multiplicación" ); // De manera equivalente, desde la versión 2.4 NUnit ofrece una sintaxis de aserción nueva y // más intuitiva basada en objetos de restricción // [http://www.nunit.org/index.php?p=constraintModel&r=2.4.7]: Assert . Eso ( 2 * 2 , Is . EqualTo ( 4 ), "Basado en restricciones de multiplicación" ); } }// El siguiente ejemplo muestra diferentes formas de escribir la misma prueba de excepción.[TestFixture] public class AssertThrowsTests { [Prueba] public void Tests () { // .NET 1.x Assert . Lanza ( typeof ( ArgumentException ), new TestDelegate ( MethodThatThrows )); // .NET 2.0 Afirmar . Lanza < ArgumentException > ( MethodThatThrows ); Afirmar . Lanza < ArgumentException > ( delegate { throw new ArgumentException (); }); // Usando C # 3.0 Assert . Lanza < ArgumentException > ( () => { lanzar nueva ArgumentException (); }); } void MethodThatThrows () { lanzar una nueva ArgumentException (); } }// Este ejemplo muestra el uso del valor de retorno para realizar una verificación adicional de la excepción.[TestFixture] public class UsingReturnValue { [Test] public void TestException () { MyException ex = Assert . Lanza < MyException > ( delegate { throw new MyException ( "mensaje" , 42 ); }); Afirmar . Eso ( ej . Mensaje , Is . EqualTo ( "mensaje" )); Afirmar . Eso ( ex . MyParam , Is . EqualTo ( 42 )); } }// Este ejemplo hace lo mismo usando la sobrecarga que incluye una restricción.[TestFixture] clase pública UsingConstraint { [Prueba] public void TestException () { Assert . Lanza ( Is . Typeof < MyException > () . And . Message . EqualTo ( "message" ) . And . Property ( "MyParam" ). EqualTo ( 42 ), delegate { throw new MyException ( "message" , 42 ); } ); } }
El marco NUnit descubre el método ExampleTestOfNUnit.TestMultiplication()
automáticamente por reflexión . [ cita requerida ]
Extensiones
FireBenchmarks es un complemento capaz de registrar el tiempo de ejecución de las pruebas unitarias y generar informes de rendimiento XML , CSV , XHTML con gráficos y seguimiento del historial. Su objetivo principal es permitir que un desarrollador o un equipo que trabaja con una metodología ágil integre métricas de rendimiento y análisis en el entorno de pruebas unitarias , controle y monitoree fácilmente la evolución de un sistema de software en términos de complejidad algorítmica y carga de recursos del sistema. [ cita requerida ]
NUnit.Forms es una expansión del marco principal de NUnit y también es de código abierto. Específicamente, busca expandir NUnit para poder manejar elementos de la interfaz de usuario de prueba en Windows Forms . En enero de 2013, Nunit.Forms está en versión Alpha y no se han publicado versiones desde mayo de 2006. [ cita requerida ]
NUnit.ASP es una expansión descontinuada [9] del marco NUnit principal y también es de código abierto. Específicamente busca expandir NUnit para poder manejar elementos de interfaz de usuario de prueba en ASP.Net. [ cita requerida ]
Ver también
- Automatización de pruebas
- Lista de marcos de prueba unitarios para lenguajes de programación .NET (incluye una columna que indica cuáles se basan en xUnit)
- XUnit.net
- JUnit
Referencias
- ^ "Adaptador de prueba NUnit 3" .
- ^ "Atributo Paralelizable" .
- ^ "TestCaseData" .
- ^ Prouse, Rob (4 de noviembre de 2015). "Probando .NET Core usando NUnit 3" .
- ^ Prouse, Rob (25 de marzo de 2015). "NUnit 3.0 Test Runner para Android e iOS" .
- ^ "NUnit Versión 3 para Compact Framework" .
- ^ "NUnit Versión 3 para SilverLight 5.0" .
- ^ "CategoryAttribute" . Consultado el 15 de diciembre de 2015 .
- ^ "Página principal del sitio web NUnit.ASP" . Sourceforge . Consultado el 15 de abril de 2008 .
Bibliografía
- Hunt, Andrew; Thomas, David (2007). Pruebas unitarias pragmáticas en C # con NUnit, 2nd Ed. La estantería pragmática (Raleigh), 2007. ISBN 0-9776166-7-3 .
- Newkirk, Jim; Vorontsov, Alexei (2004). Desarrollo basado en pruebas en Microsoft .NET. Microsoft Press (Redmond), 2004. ISBN 0-7356-1948-4 .
- Hamilton, Bill (2004). Referencia de bolsillo NUnit . O'Reilly (Cambridge), 2004. ISBN 0-596-00739-6 .
enlaces externos
- Página web oficial
- Sitio de GitHub
- Sitio de Launchpad (ya no se mantiene)
- Desarrollo impulsado por pruebas con NUnit y demostración en video de Test-driven.NET
- Página de inicio de NUnit.Forms
- Página de inicio de NUnitAsp
- El artículo Mejora de la calidad de la aplicación mediante el desarrollo basado en pruebas proporciona una introducción a TDD con ejemplos concretos que utilizan Nunit
- Herramienta de código abierto, que puede ejecutar pruebas nunit en paralelo
- Charlie Poole , co-desarrollador
- Rob Prouse , co-desarrollador
- Simone Busoli , co-desarrollador