La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Pruebas Unitarias [UTN - Tecnologías de desarrollo de software IDE] 2008 nUnit Ezequiel GhioneEzequiel Ghione [fecha][fecha]

Presentaciones similares


Presentación del tema: "Pruebas Unitarias [UTN - Tecnologías de desarrollo de software IDE] 2008 nUnit Ezequiel GhioneEzequiel Ghione [fecha][fecha]"— Transcripción de la presentación:

1 Pruebas Unitarias [UTN - Tecnologías de desarrollo de software IDE] 2008 nUnit Ezequiel GhioneEzequiel Ghione [fecha][fecha]

2 ContenidoContenido Definiciones Definiciones Que es una prueba unitaria ? Que es una prueba unitaria ? Que es nUnit ? Que es nUnit ? Beneficios de realizar pruebas unitarias Beneficios de realizar pruebas unitarias Facilitan las modificaciones Facilitan las modificaciones Facilitan la integración de Código Facilitan la integración de Código Conceptos Básicos Conceptos Básicos Atributos Atributos Clase Assert Clase Assert Definiciones Definiciones Que es una prueba unitaria ? Que es una prueba unitaria ? Que es nUnit ? Que es nUnit ? Beneficios de realizar pruebas unitarias Beneficios de realizar pruebas unitarias Facilitan las modificaciones Facilitan las modificaciones Facilitan la integración de Código Facilitan la integración de Código Conceptos Básicos Conceptos Básicos Atributos Atributos Clase Assert Clase Assert

3 DefinicionesDefiniciones Que es una prueba unitaria ? Que es una prueba unitaria ? Es un procedimiento usado para validar que un modulo de código fuente funciona apropiadamente. Es un procedimiento usado para validar que un modulo de código fuente funciona apropiadamente. Que es nUnit ? Que es nUnit ? Es un framework de software libre que sirve para realizar pruebas unitarias para.NET. Es un framework de software libre que sirve para realizar pruebas unitarias para.NET. Que es una prueba unitaria ? Que es una prueba unitaria ? Es un procedimiento usado para validar que un modulo de código fuente funciona apropiadamente. Es un procedimiento usado para validar que un modulo de código fuente funciona apropiadamente. Que es nUnit ? Que es nUnit ? Es un framework de software libre que sirve para realizar pruebas unitarias para.NET. Es un framework de software libre que sirve para realizar pruebas unitarias para.NET. Sintaxis

4 Beneficios de realizar pruebas unitarias Facilitan las modificaciones Facilitan las modificaciones Al permitir verificar que los módulos siguen trabajando correctamente después de haber realizado modificaciones. Al permitir verificar que los módulos siguen trabajando correctamente después de haber realizado modificaciones. Facilitan la integración de Código Facilitan la integración de Código Ya que elimina la incertidumbre que genera cada unidad, facilitando posteriormente las pruebas de integración que se realizan cuando se prueba que la interacción de varios módulos funciona correctamente. Ya que elimina la incertidumbre que genera cada unidad, facilitando posteriormente las pruebas de integración que se realizan cuando se prueba que la interacción de varios módulos funciona correctamente. Facilitan las modificaciones Facilitan las modificaciones Al permitir verificar que los módulos siguen trabajando correctamente después de haber realizado modificaciones. Al permitir verificar que los módulos siguen trabajando correctamente después de haber realizado modificaciones. Facilitan la integración de Código Facilitan la integración de Código Ya que elimina la incertidumbre que genera cada unidad, facilitando posteriormente las pruebas de integración que se realizan cuando se prueba que la interacción de varios módulos funciona correctamente. Ya que elimina la incertidumbre que genera cada unidad, facilitando posteriormente las pruebas de integración que se realizan cuando se prueba que la interacción de varios módulos funciona correctamente. Sintaxis

5 Conceptos Básicos Atributos: Atributos: TestFixture: Indica que una clase tiene métodos de prueba. TestFixture: Indica que una clase tiene métodos de prueba. Test: Marca un método como método de prueba. Test: Marca un método como método de prueba. TestFixtureSetUp / TestFixtureTearDown : El primero se encarga de los preparativos antes de ejecutar una prueba y el segundo se encarga de restaurar los cambios. TestFixtureSetUp / TestFixtureTearDown : El primero se encarga de los preparativos antes de ejecutar una prueba y el segundo se encarga de restaurar los cambios. ExpectedException: Indica que se espera una excepción en la ejecución de un método. ExpectedException: Indica que se espera una excepción en la ejecución de un método. Category: Permite trabajar con grupos de pruebas. Category: Permite trabajar con grupos de pruebas. Explicit: Indica que una prueba debe ser ignorada a menos que se especifique lo contrario. Explicit: Indica que una prueba debe ser ignorada a menos que se especifique lo contrario. Ignore: Indica que se debe ignorar una prueba determinada Ignore: Indica que se debe ignorar una prueba determinada Atributos: Atributos: TestFixture: Indica que una clase tiene métodos de prueba. TestFixture: Indica que una clase tiene métodos de prueba. Test: Marca un método como método de prueba. Test: Marca un método como método de prueba. TestFixtureSetUp / TestFixtureTearDown : El primero se encarga de los preparativos antes de ejecutar una prueba y el segundo se encarga de restaurar los cambios. TestFixtureSetUp / TestFixtureTearDown : El primero se encarga de los preparativos antes de ejecutar una prueba y el segundo se encarga de restaurar los cambios. ExpectedException: Indica que se espera una excepción en la ejecución de un método. ExpectedException: Indica que se espera una excepción en la ejecución de un método. Category: Permite trabajar con grupos de pruebas. Category: Permite trabajar con grupos de pruebas. Explicit: Indica que una prueba debe ser ignorada a menos que se especifique lo contrario. Explicit: Indica que una prueba debe ser ignorada a menos que se especifique lo contrario. Ignore: Indica que se debe ignorar una prueba determinada Ignore: Indica que se debe ignorar una prueba determinada Sintaxis

6 Conceptos Básicos Clase Assert: Clase Assert: Assert.AreEqual: Prueba que 2 valores son equivalentes. Assert.AreEqual: Prueba que 2 valores son equivalentes. Assert.AreSame: Prueba si 2 objetos hacen referencia a la misma instancia. Assert.AreSame: Prueba si 2 objetos hacen referencia a la misma instancia. Assert.IsTrue: Prueba si una condición es evaluada como Verdadero. Assert.IsTrue: Prueba si una condición es evaluada como Verdadero. Assert.isFalse: Prueba si una condición es evaluada como Falso. Assert.isFalse: Prueba si una condición es evaluada como Falso. Assert.isNull: Prueba por un objeto nulo. Assert.isNull: Prueba por un objeto nulo. Assert.IsNotNull: Prueba por un objeto no nulo. Assert.IsNotNull: Prueba por un objeto no nulo. Hay más métodos en la clase Assert, estos son los principales Hay más métodos en la clase Assert, estos son los principales Clase Assert: Clase Assert: Assert.AreEqual: Prueba que 2 valores son equivalentes. Assert.AreEqual: Prueba que 2 valores son equivalentes. Assert.AreSame: Prueba si 2 objetos hacen referencia a la misma instancia. Assert.AreSame: Prueba si 2 objetos hacen referencia a la misma instancia. Assert.IsTrue: Prueba si una condición es evaluada como Verdadero. Assert.IsTrue: Prueba si una condición es evaluada como Verdadero. Assert.isFalse: Prueba si una condición es evaluada como Falso. Assert.isFalse: Prueba si una condición es evaluada como Falso. Assert.isNull: Prueba por un objeto nulo. Assert.isNull: Prueba por un objeto nulo. Assert.IsNotNull: Prueba por un objeto no nulo. Assert.IsNotNull: Prueba por un objeto no nulo. Hay más métodos en la clase Assert, estos son los principales Hay más métodos en la clase Assert, estos son los principales Sintaxis

7 Laboratorio Ejemplo de nUnit Ejemplo de nUnit

8 Crear la clase OperacionesMatemáticas using System; using System.Collections.Generic; using System.Text; namespace PruebasUnitarias { class operacionesMatematicas class operacionesMatematicas { public double Suma(double valor1, double valor2) { return valor1 + valor2; } public double Suma(double valor1, double valor2) { return valor1 + valor2; } public double Resta(double valor1, double valor2) { return valor1-valor2; } public double Resta(double valor1, double valor2) { return valor1-valor2; } public double Multiplica(double valor1, double valor2) { return valor1*valor2; } public double Multiplica(double valor1, double valor2) { return valor1*valor2; } public double Divide(double valor1, double valor2) { public double Divide(double valor1, double valor2) { if (valor2 == 0) if (valor2 == 0) { throw new DivideByZeroException(); throw new DivideByZeroException(); } return valor1 / valor2; return valor1 / valor2; } using System; using System.Collections.Generic; using System.Text; namespace PruebasUnitarias { class operacionesMatematicas class operacionesMatematicas { public double Suma(double valor1, double valor2) { return valor1 + valor2; } public double Suma(double valor1, double valor2) { return valor1 + valor2; } public double Resta(double valor1, double valor2) { return valor1-valor2; } public double Resta(double valor1, double valor2) { return valor1-valor2; } public double Multiplica(double valor1, double valor2) { return valor1*valor2; } public double Multiplica(double valor1, double valor2) { return valor1*valor2; } public double Divide(double valor1, double valor2) { public double Divide(double valor1, double valor2) { if (valor2 == 0) if (valor2 == 0) { throw new DivideByZeroException(); throw new DivideByZeroException(); } return valor1 / valor2; return valor1 / valor2; }

9 Pasos antes de crear la clase Test Se debe agregar una referencia a nUnit.framework Se debe agregar una referencia a nUnit.framework Se debe compilar la clase operaciones matemáticas, ya que nUnit trabaja sobre archivos.exe Se debe compilar la clase operaciones matemáticas, ya que nUnit trabaja sobre archivos.exe Se debe agregar una referencia a nUnit.framework Se debe agregar una referencia a nUnit.framework Se debe compilar la clase operaciones matemáticas, ya que nUnit trabaja sobre archivos.exe Se debe compilar la clase operaciones matemáticas, ya que nUnit trabaja sobre archivos.exe

10 Crear la clase TestOperacionesMatemáticas using System; using System.Collections.Generic; using System.Text; namespace PruebasUnitarias { using NUnit.Framework; using NUnit.Framework; [TestFixture()] //Este atributo indica que es una clase de prueba [TestFixture()] //Este atributo indica que es una clase de prueba public class TestOperacionesMatematicas public class TestOperacionesMatematicas { [Test()] //Este atributo indica que es un método de prueba [Test()] //Este atributo indica que es un método de prueba public void pruebaSuma() { public void pruebaSuma() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(10, op.Suma(5, 5), "Prueba suma 1 - 5+5=10"); Assert.AreEqual(10, op.Suma(5, 5), "Prueba suma 1 - 5+5=10"); } [Test()] [Test()] public void pruebaResta() public void pruebaResta() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(0, op.Resta(5, 5), "Prueba resta 1 - 5-5=0"); Assert.AreEqual(0, op.Resta(5, 5), "Prueba resta 1 - 5-5=0"); } // SIGUE // SIGUE using System; using System.Collections.Generic; using System.Text; namespace PruebasUnitarias { using NUnit.Framework; using NUnit.Framework; [TestFixture()] //Este atributo indica que es una clase de prueba [TestFixture()] //Este atributo indica que es una clase de prueba public class TestOperacionesMatematicas public class TestOperacionesMatematicas { [Test()] //Este atributo indica que es un método de prueba [Test()] //Este atributo indica que es un método de prueba public void pruebaSuma() { public void pruebaSuma() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(10, op.Suma(5, 5), "Prueba suma 1 - 5+5=10"); Assert.AreEqual(10, op.Suma(5, 5), "Prueba suma 1 - 5+5=10"); } [Test()] [Test()] public void pruebaResta() public void pruebaResta() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(0, op.Resta(5, 5), "Prueba resta 1 - 5-5=0"); Assert.AreEqual(0, op.Resta(5, 5), "Prueba resta 1 - 5-5=0"); } // SIGUE // SIGUE

11 [Test()] [Test()] public void pruebaMultiplicacion() public void pruebaMultiplicacion() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(81, op.Multiplica(9, 9), "Prueba multiplicacion 1 - 9*9=81"); Assert.AreEqual(81, op.Multiplica(9, 9), "Prueba multiplicacion 1 - 9*9=81"); } [Test()] [Test()] public void pruebaDivision() public void pruebaDivision() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(1, op.Divide(5, 5), "Prueba division 1 - 5/5=1"); Assert.AreEqual(1, op.Divide(5, 5), "Prueba division 1 - 5/5=1"); } [Test] [Test] [ExpectedException(typeof(DivideByZeroException))]//Este atributo indica que se espera una Excepcion [ExpectedException(typeof(DivideByZeroException))]//Este atributo indica que se espera una Excepcion public void pruebaDivisionPorZero() public void pruebaDivisionPorZero() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); op.Divide(5, 0); op.Divide(5, 0); } } //FIN CLASE } //FIN CLASE } //FIN NAME PACE [Test()] [Test()] public void pruebaMultiplicacion() public void pruebaMultiplicacion() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(81, op.Multiplica(9, 9), "Prueba multiplicacion 1 - 9*9=81"); Assert.AreEqual(81, op.Multiplica(9, 9), "Prueba multiplicacion 1 - 9*9=81"); } [Test()] [Test()] public void pruebaDivision() public void pruebaDivision() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); Assert.AreEqual(1, op.Divide(5, 5), "Prueba division 1 - 5/5=1"); Assert.AreEqual(1, op.Divide(5, 5), "Prueba division 1 - 5/5=1"); } [Test] [Test] [ExpectedException(typeof(DivideByZeroException))]//Este atributo indica que se espera una Excepcion [ExpectedException(typeof(DivideByZeroException))]//Este atributo indica que se espera una Excepcion public void pruebaDivisionPorZero() public void pruebaDivisionPorZero() { operacionesMatematicas op = new operacionesMatematicas(); operacionesMatematicas op = new operacionesMatematicas(); op.Divide(5, 0); op.Divide(5, 0); } } //FIN CLASE } //FIN CLASE } //FIN NAME PACE

12 RecomendacionesRecomendaciones No escribas una prueba que pase a la primera. No escribas una prueba que pase a la primera. Comienza por los métodos que pueden devolver null o donde puedan ocurrir excepciones. Comienza por los métodos que pueden devolver null o donde puedan ocurrir excepciones. Empieza escribiendo las pruebas para los métodos donde creas que es más probable que exista una falla. Empieza escribiendo las pruebas para los métodos donde creas que es más probable que exista una falla. Cuando tengas que agregar una nueva funcionalidad a tu código, empieza por realizar las pruebas. Cuando tengas que agregar una nueva funcionalidad a tu código, empieza por realizar las pruebas. Cuando encuentres un error en tu aplicación, aprovecha a escribir una prueba, que exponga el error. Cuando encuentres un error en tu aplicación, aprovecha a escribir una prueba, que exponga el error. No escribas una prueba que pase a la primera. No escribas una prueba que pase a la primera. Comienza por los métodos que pueden devolver null o donde puedan ocurrir excepciones. Comienza por los métodos que pueden devolver null o donde puedan ocurrir excepciones. Empieza escribiendo las pruebas para los métodos donde creas que es más probable que exista una falla. Empieza escribiendo las pruebas para los métodos donde creas que es más probable que exista una falla. Cuando tengas que agregar una nueva funcionalidad a tu código, empieza por realizar las pruebas. Cuando tengas que agregar una nueva funcionalidad a tu código, empieza por realizar las pruebas. Cuando encuentres un error en tu aplicación, aprovecha a escribir una prueba, que exponga el error. Cuando encuentres un error en tu aplicación, aprovecha a escribir una prueba, que exponga el error. Sintaxis

13 Links de Interes ZaneBug Página de otro testUnitario, que utiliza una sintaxis muy parecida a nUnit ZaneBug Página de otro testUnitario, que utiliza una sintaxis muy parecida a nUnit ZaneBug www.mundoprogramacion.com Definiciones, sintaxis y ejemplos www.mundoprogramacion.com Definiciones, sintaxis y ejemplos www.mundoprogramacion.com www.superneurona.com PDF con un ejemplo simple paso a paso www.superneurona.com PDF con un ejemplo simple paso a paso www.superneurona.com Colabora.Net Un ejemplo un poco más elaborado Colabora.Net Un ejemplo un poco más elaborado Colabora.Net www.lobosoft.es Descripción de los distintos atributos de nUnit www.lobosoft.es Descripción de los distintos atributos de nUnit www.lobosoft.es www.nUnit.org www.nUnit.org www.nUnit.org ZaneBug Página de otro testUnitario, que utiliza una sintaxis muy parecida a nUnit ZaneBug Página de otro testUnitario, que utiliza una sintaxis muy parecida a nUnit ZaneBug www.mundoprogramacion.com Definiciones, sintaxis y ejemplos www.mundoprogramacion.com Definiciones, sintaxis y ejemplos www.mundoprogramacion.com www.superneurona.com PDF con un ejemplo simple paso a paso www.superneurona.com PDF con un ejemplo simple paso a paso www.superneurona.com Colabora.Net Un ejemplo un poco más elaborado Colabora.Net Un ejemplo un poco más elaborado Colabora.Net www.lobosoft.es Descripción de los distintos atributos de nUnit www.lobosoft.es Descripción de los distintos atributos de nUnit www.lobosoft.es www.nUnit.org www.nUnit.org www.nUnit.org Sintaxis


Descargar ppt "Pruebas Unitarias [UTN - Tecnologías de desarrollo de software IDE] 2008 nUnit Ezequiel GhioneEzequiel Ghione [fecha][fecha]"

Presentaciones similares


Anuncios Google