Tutorial NUNIT
Tutorial de NUnit
Autor: Carlos Hidalgo Lache
1
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
1 . I N T R O D U CCI \u00d3 N Lo que hace tan efectiva la TDD es la automatizaci\u00f3n de las pruebas de programador, son
gratis
y
y
totalmente
administrar
las
funcionales.
m ism as.
El hecho de utilizar TDD implica 3 acciones: escribir las pruebas, escribir el c\u00f3digo que
2 . D ESCR I P CI O N
NUnit es una herramienta que se encarga de analizar ensamblados generados por
la \u00faltima versi\u00f3n del mismo. NUnit ofrece una interface simple que informa si una prueba o un conjunto de pruebas ignorada. fall\u00f3, pas\u00f3 o fue versi\u00f3n estable es la http: / / www.nunit.org/ download.html
2.1,
se
pueden
descargar
de:
3 . F U N CI O N A M I E N T O NUnit basa su funcionamiento en dos aspectos, el primero es la utilizaci\u00f3n de atributos personalizados. Estos atributos le indican al framework de NUnit que debe
El segundo son las aserciones, que no son mas que m\u00e9todos del framework de NUnit utilizados para comprobar y comparar valores.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
3 .1 A TRI B U TOS
La versi\u00f3n 1x de NUnit utilizaba las convenciones de nombrado del framework de
T e s t Fi x t u r e
Este atributo se utiliza para indicar que una clase contiene m\u00e9todos de prueba. En versiones anteriores para poder utilizar este atributo se deb\u00eda extender (heredar de) la clase TestCase, a partir de la versi\u00f3n 2 esto no es necesario, situaci\u00f3n que hace mucho m\u00e1s flexible el uso del atributo. Existen algunas restricciones como por ejemplo que la clase debe tener un constructor por defecto y debe ser publica para que el framework NUnit pueda accederla. Ejemplo: #using using namespace System; using namespace NUnit::Framework; namespace NUnitTests { [TestFixture] public __gc class SuccessTests { // ... }; } #include "cppsample.h" namespace NUnitTests { // ... } package NUnit.Tests; import System.*; import NUnit.Framework.TestFixture;
/** @attribute NUnit.Framework.TestFixture() */ public class SuccessTests { // ... }
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
End Class End Namespace
Te s t
Se utiliza para marcar un método como método de prueba, éste no debe tener Ejemplo: Imports System
Public Class PruebasProgramador Public Sub MetodoA() ' ... End Sub
T e s t Fi x t u r e Se t U p / T e s t Fi x t u r e T e a r D o w n
El primero de estos atributos se encarga de crear el ambiente de pruebas antes de
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
Ex p e c t e d Ex c e p t i o n
Este atributo como su nombre lo sugiere, tiene como funcionalidad indicar que la
especifico la prueba no lo es. Esto es cierto aun cuando la excepción lanzada herede Ejemplo: namespace Pruebas { using System; using NUnit.Framework; [TestFixture] public class Pruebas { [Test]
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
}
Imports System Imports Nunit.Framework Namespace Nunit.Tests Public Class SuccessTests Public Sub ExpectAnException() ' ... End Sub
#using using namespace System; using namespace NUnit::Framework; namespace NUnitTests { [TestFixture] public __gc class SuccessTests { [Test] [ExpectedException(__typeof(InvalidOperationException))] void ExpectAnException(); }; } #include "cppsample.h" namespace // ... }
NUnitTests {
Su i t e El atributo suite es utilizado para definir subconjuntos de pruebas de acuerdo a las
utilizando el atributo category, además se pueden agrupar dentro de una estructura
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
El atributo category provee una alternativa a las suites para trabajar con grupos de pruebas. Cualquiera, ya sea casos de prueba individuales o Fixtures, pueden ser
2.2 del producto. Este atributo puede utilizarse junto con TextFixture o Test Ejem plos: Imports System Imports Nunit.Framework Namespace Pruebas Public Class PruebasLargas1 '... End Class End Namespace
Imports System Imports Nunit.Framework Namespace Pruebas Public Class PruebasExitosas Public Sub PruebaCorta()
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
el programa la ignora. El icono de la prueba o el Fixtures se coloca amarillo y es
Ejem plos: namespace Pruebas { using System; using NUnit.Framework; [TestFixture, Explicit] public class PruebaX { //... } }
namespace Pruebas { using System; using NUnit.Framework; [TestFixture] public class PruebaX { [Test, Explicit] public void PruebaExp() { //... }
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
I gn or e
Utilizado para indicar que se debe ignorar determinada prueba o Fixture, El programa temporalmente, es decir, este atributo es útil para marcar una prueba o Fixture, si no
Ejem plos: Imports System Imports Nunit.Framework Namespace Pruebas Public Class PruebasX '... End Class End Namespace
Imports System Imports Nunit.Framework Namespace Pruebas Public Class PruebasX '... End Sub
Public Sub Ignorada()
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
En general se tiene dos métodos sobrecargados: Assert.AreSame y AssertAreEqual, el primero verifica que el mismo objeto esté referenciado por ambos argumentos, es decir que las dos referencias a objetos apunten al mismo objeto, por ejemplo: Assert.AreEqual (int expected, int actual, string message );
El Segundo esta sobrecargado para trabajar con la mayoría de los tipos comunes(int, integer, double, single, string, etc.), por ejemplo Assert.AreEqual(string expected, string actual, string message );
En una próxima versión se podrá comparar arreglos. Es de anotar que los métodos sobrecargados proveen la funcionalidad de comparar
Assert.AreEqual(3, 3.0, “Son Iguales” );
Condiciones de Prueba Los métodos que evalúan una condición se denominan de acuerdo a la condición. El valor a probar es el primer argumento y opcionalmente un mensaje como segundo. Ejemplo: Assert.IsTrue( bool condicion );
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
4 . U T I L I Z A CI Ó N 4 . 1 I N T ER FA CES
NUnit provee dos interfaces de usuario, la interfaz gráfica y la interfaz de consola.
I n t e r f a z Gr á f i c a Esta interface puede ejecutarse con o sin un nombre de ensamblado desde la ventana
· Para evitar este comportamiento se debe escribir: nunit-gui / noload, por el contrario nunit-gui [nombreEnsamblado] · También puede abrir un proyecto de VisualStudio .NET: nunit-gui [Proyecto] · Para especificar un Fixture especifico de un ensamblado: nunit.gui /fixture: [fixture] [ensamblado] · Normalmente la GUI carga un ensamblado y entonces espera que el usuario le nunit-gui [ensamblado] /run · Para especificar que configuración desea cargar (debug/ release) teclee: nunit-gui [Provecto Visual Studio] /config: [configuracion] La GUI no permite cargar mas de un ensamblado simultáneamente, para esto se debe cargar la solución completa.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
generada en el direcorio de trabajo. · A diferencia del modo grafico en la consola siempre se carga el ensamblado y se ejecutan las pruebas automáticamente: nunit-console [ensamblado] Donde [ ensamblado] puede ser un ensamblado, un proyecto de VS.NET o un proyecto de NUnit. · Para ejecutar solo un Fixture del ensamblado teclee: nunit.console /fixture: [fixture] [ensamblado] · Para especificar pruebas con categorías a incluir o excluir teclee: nunit-console [ ensamblado] / include: [ categoría de pruebas] nunit-console [ ensamblado] / exclude: [ categoria de pruebas] · Es de anotar que include ejecuta solo las pruebas especificadas dentro de la categoría, mientras que exclude como es lógico ejecuta todas las pruebas menos las especificadas en la cláusula. Por otro lado es posible utilizar estos comandos especificando varias categorías, para hacer esto se debe separa las categorías por com as. Si desea guardar los resultados en un archivo de texto lo puede hacer de la siguiente manera: nunit.console /out: [archivo] (version 2.2) · También lo puede hacer con el archivo de error generado por NUnit:
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
4 . 2 I M P L E M E N T A N D O U N A P R U EB A
Mira en la siguiente pagina el ejemplo creado por la gente de NUnit. (he hecho algunos comentarios para adaptar el ejemplo a la versiones nuevas)
NOTA: Para configurar el path del sistema haga lo siguiente:
Ejemplo. Supongamos que hemos escrito una aplicación bancaria y que tenemos una
namespace bank {
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
namespace bank { using NUnit.Framework; [TestFixture] public class AccountTest { [Test] public void TransferFunds() { Account source = new Account(); source.Deposit(200.00F);
source.TransferFunds(destination, 100.00F);
[ TestFixture] – este es la forma de indicar que la clase contiene código de prueba.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
bank.AccountTest.TransferFunds() in C:\nunit\BankSampleTests\AccountTest.cs:line 17” Ese es un comportamiento esperado, la prueba ha fallado debido a que no hemos implementado el método TransferFunds aún. Ahora hagámoslo funcionar. No cierres el GUI, vuelve a tu IDE y corrige el código, cámbialo así: public void TransferFunds(Account destination, float amount) { destination.Deposit(amount); Withdraw(amount); }
Ahora recompila tu código y haz click en el botón run en la GUI nuevame barra de estado y el árbol de pruebas se tornarán verdes. (Nota como el GUI ha pruebas. Ahora añadiremos algo de control de errores al código de Account. Estamos
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
[Test] [ExpectedException(typeof(InsufficientFundsException))] public void TransferWithInsufficientFunds() { Account source = new Account(); source.Deposit(200.00F);
source.TransferFunds(destination, 300.00F); }
Este método de prueba además del atributo [ Test] posee otro llamado [ ExpectedException] - esta es la forma de indicar que el código de prueba está
cuando la estructura del árbol de prueba cambia – Ej.: cuando se ha agregado una
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
try { source.TransferFunds(destination, 300.00F);
Assertion.AssertEquals(150.00F,destination.Balance); }
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
verás: bank.AccountTest.TransferWithInsufficientFundsAtomicity() en la lista con la razón por la cual la prueba es ignorada. Al ver nuestro código de prueba nos damos cuenta que se puede hacer algo de refactorización. Todos los métodos comparten un conjunto común de objetos de prueba. Extraigamos el código de inicialización a un método de SetUp y reusémoslo en todas nuestras pruebas. La versión refactorizada de nuestra clase de prueba sería: namespace bank { using System; using NUnit.Framework;
[TestFixture]
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT
{ } Assertion.AssertEquals(200.00F,source.Balance); Assertion.AssertEquals(150.00F,destination.Balance); } } }
Nota que el método Init tiene el código común de inicialización, posee void, sin parámetros, y está marcado con el atributo [SetUp]. Compila y ejecuta- vas a ver la misma barra amarilla!
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Titles you can't find anywhere else
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Tutorial NUNIT