Articulo de referencia

NUnit

[[.NET Foundation]]"},"latest release version":{"wt":"4.6.0"},"latest release date":{"wt":"{{Start date and age|2026|05|03|df=y}}"},"repo":{"wt":"{{URL|https://github.com/nunit}...

NUnit es un marco de trabajo de código abierto para pruebas unitarias en .NET , .NET Framework y Mono . Cumple la misma función que JUnit en el mundo Java y es uno de los muchos que forman parte de la familia xUnit .

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 a través de ejecutores de terceros.
  • Las pruebas se pueden ejecutar en paralelo. [ 2 ]
  • Fuerte apoyo a las pruebas basadas en datos. [ 3 ]
  • Admite múltiples plataformas, incluyendo .NET Core , [ 4 ] Xamarin Mobile , [ 5 ] Compact Framework [ 6 ] y Silverlight . [ 7 ]
  • Cada caso de prueba puede agregarse a una o más categorías, para permitir una ejecución selectiva. [ 8 ]

NUnit proporciona un ejecutor de consola (nunit3-console.exe) que se utiliza para la ejecución por lotes de pruebas. Este ejecutor funciona a través del motor de pruebas de NUnit, que le permite cargar, explorar y ejecutar pruebas. Cuando las pruebas deben ejecutarse en un proceso independiente, el motor utiliza el programa nunit-agent para su ejecución.

El ejecutor NUnitLite puede utilizarse en situaciones donde un ejecutor más sencillo sea más adecuado. Permite a los desarrolladores crear pruebas autoejecutables.

Afirmaciones

NUnit proporciona un amplio conjunto de aserciones como métodos estáticos de la Assertclase. Si una aserción falla, la llamada al método no devuelve ningún valor y se informa de un error. Si una prueba contiene varias aserciones, las que siguen a la que falló no se ejecutarán. Por este motivo, suele ser mejor intentar una sola aserción por prueba.

NUnit 3.x admite múltiples aserciones.

[Prueba] public void ComplexNumberTest () { ComplexNumber result = SomeCalculation ();Assert . Multiple (() => { Assert . AreEqual ( 5.2 , result . RealPart , "Parte real" ); Assert . AreEqual ( 3.9 , result . ImaginaryPart , "Parte imaginaria" ); }); }

Clásico

Antes de NUnit 2.4, se utilizaba un método independiente de la Assertclase para cada aserción diferente. Esta práctica sigue siendo compatible con NUnit, ya que muchos usuarios la prefieren.

Cada método assert puede llamarse sin mensaje, con un mensaje de texto simple o con un mensaje y argumentos. En este último caso, el mensaje se formatea utilizando el texto y los argumentos proporcionados.

// Afirmaciones de igualdad Assert . AreEqual ( object expected , object actual ); Assert . AreEqual ( object expected , object actual , string message , params object [] parms );Assert . AreNotEqual ( objeto esperado , objeto actual ); Assert . AreNotEqual ( objeto esperado , objeto actual , cadena mensaje , params objeto [] parms );// Afirmaciones de identidad Assert . AreSame ( objeto esperado , objeto actual ); Assert . AreSame ( objeto esperado , objeto actual , cadena mensaje , params objeto [] parms );Assert . AreNotSame ( objeto esperado , objeto actual ); Assert . AreNotSame ( objeto esperado , objeto actual , cadena mensaje , params objeto [] parms );// Afirmaciones de condición // (Para simplificar, se omiten los métodos con firmas de mensaje). Assert . IsTrue ( bool condition ); Assert . IsFalse ( bool condition );Afirmar.IsNull ( object anObject ) ; Afirmar.IsNotNull ( object anObject ) ;Afirmar . IsNaN ( double aDouble );Afirmar.IsEmpty ( string aString ) ; Afirmar.IsNotEmpty ( string aString ) ;Assert.IsEmpty ( ICollection colección ) ; Assert.IsNotEmpty ( ICollection colección ) ;

Basado en restricciones

A partir de NUnit 2.4, se introdujo un nuevo modelo basado en restriccionesAssert . Este enfoque utiliza un único método de la clase para todas las aserciones, pasando un Constraintobjeto que especifica la prueba a realizar. NUnit ahora utiliza internamente este modelo para todas las aserciones. Los métodos del enfoque clásico se han reimplementado sobre este nuevo modelo.

Ejemplo

Ejemplo de un entorno de prueba NUnit :

using NUnit.Framework ; [ TestFixture] public class ExampleTestOfNUnit { [Test] public void TestMultiplication () { Assert.AreEqual ( 4 , 2 * 2 , "Multiplication" ); // De forma 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.That ( 2 * 2 , Is.EqualTo ( 4 ) , "Multiplication constraint-based" ); } }// El siguiente ejemplo muestra diferentes maneras de escribir la misma prueba de excepción.[TestFixture] public class AssertThrowsTests { [Test] public void Tests () { // .NET 1.x Assert . Throws ( typeof ( ArgumentException ), new TestDelegate ( MethodThatThrows )); // .NET 2.0 Assert . Throws < ArgumentException > ( MethodThatThrows ); Assert . Throws < ArgumentException > ( delegate { throw new ArgumentException (); });// Usando C# 3.0 Assert . Throws < ArgumentException > ( () => { throw new ArgumentException (); }); } void MethodThatThrows () { throw new 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 . Throws < MyException > ( delegate { throw new MyException ( "message" , 42 ); }); Assert . That ( ex . Message , Is . EqualTo ( "message" )); Assert . That ( ex . MyParam , Is . EqualTo ( 42 )); } }// Este ejemplo hace lo mismo usando la sobrecarga que incluye una restricción.[TestFixture] public class UsingConstraint { [Test] public void TestException () { Assert . Throws ( Is . Typeof < MyException > () . And . Message . EqualTo ( "message" ) . And . Property ( "MyParam" ). EqualTo ( 42 ), delegate { throw new MyException ( "message" , 42 ); }); } }

El framework NUnit descubre el método ExampleTestOfNUnit.TestMultiplication()automáticamente mediante reflexión .

Extensiones

FireBenchmarks es un complemento que permite registrar el tiempo de ejecución de las pruebas unitarias y generar informes de rendimiento en formato XML , CSV y XHTML con gráficos e historial. Su principal objetivo es facilitar a los desarrolladores y equipos que trabajan con metodología ágil la integración de métricas y análisis de rendimiento en el entorno de pruebas unitarias , para así controlar y monitorizar la evolución de un sistema de software en términos de complejidad algorítmica y carga de recursos del sistema.

NUnit.Forms es una extensión del framework principal de NUnit y también es de código abierto. Su objetivo específico es ampliar NUnit para que pueda gestionar las pruebas de elementos de la interfaz de usuario en Windows Forms . A enero de 2013, NUnit.Forms se encontraba en fase alfa y no se habían publicado versiones desde mayo de 2006.

NUnit.ASP es una extensión descontinuada [ 9 ] del marco de trabajo principal de NUnit y también es de código abierto. Su objetivo específico es ampliar NUnit para que pueda manejar pruebas de elementos de interfaz de usuario en ASP.NET.

Véase también

Referencias

  1. "Adaptador de prueba NUnit 3" .
  2. "Atributo paralelizable" . GitHub .
  3. "TestCaseData" . GitHub .
  4. Prouse, Rob (2015-11-04). "Probando .NET Core usando NUnit 3" .
  5. Prouse, Rob (25-03-2015). "NUnit 3.0 Test Runner para Android e iOS" .
  6. "NUnit Versión 3 para Compact Framework" .
  7. "NUnit Versión 3 para SilverLight 5.0" .
  8. "CategoryAttribute" . GitHub . Consultado el 15 de diciembre de 2015 .
  9. "Página principal del sitio web NUnit.ASP" . SourceForge . Consultado el 15 de abril de 2008 .

Bibliografía

  • Hunt, Andrew; Thomas, David (2007). Pragmatic Unit Testing in C# with NUnit, 2.ª ed. The Pragmatic Bookshelf (Raleigh), 2007. ISBN 0-9776166-7-3.
  • Newkirk, Jim; Vorontsov, Alexei (2004). Desarrollo guiado por pruebas en Microsoft .NET. Microsoft Press (Redmond), 2004. ISBN 0-7356-1948-4.
  • Hamilton, Bill (2004). NUnit Pocket Reference . O'Reilly (Cambridge), 2004. ISBN 0-596-00739-6.
  • Sitio web oficial
  • Sitio de GitHub
  • Sitio web de Launchpad (ya no recibe mantenimiento)
  • Desarrollo guiado por pruebas con NUnit y Test-driven.NET. Archivado el 15 de mayo de 2008 en la demostración en vídeo de Wayback Machine .
  • Página principal de NUnit.Forms
  • Página principal de NUnitAsp
  • El artículo " Mejora de la calidad de las aplicaciones mediante el desarrollo guiado por pruebas" ofrece una introducción al TDD con ejemplos concretos utilizando NUnit.
  • Herramienta de código abierto que puede ejecutar pruebas NUnit en paralelo. Archivada el 18/11/2013 en Wayback Machine.
  • Charlie Poole , codesarrollador
  • Rob Prouse , codesarrollador
  • Simone Busoli , codesarrolladora