Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Algoritmos y programación III (75.07)
Pruebas Automatizadas – JUnit - NUnit
2
Temario Introducción a JUnit Descripción Clases involucradas
Casos particulares de pruebas NUnit - diferencias Desarrollo basado en pruebas
3
Introducción JUnit Se trata de un conjunto de clases que nos permiten realizar pruebas unitarias sobre código Java. Está desarrollado en Java. JUnit es Software de código abierto y está alojado en SourceForge. Página principal:
4
Descripción JUnit consta de varios paquetes (packages) de clases
Paquetes para construir los casos de prueba junit.framework, contiene las clases básicas de junit que utilizaremos para construir los casos de prueba. junit.extensions, contiene clases que extienden la funcionalidad de las clases básicas. Paquetes para ejecutar los casos de prueba junit.textui, permite ejecutar los casos de prueba en unainterfaz de texto. junit,awtui y junit.swingui proporcionan una interfaz gráfica para la ejecución de los casos de prueba. Integrado a la plataforma de desarrollo Eclipse
5
junit.framework Conjunto de clases para construir casos de prueba, algunas de las mas representativas son: Assert, proporciona una serie de métodos estáticos para comprobar el cumplimiento de condiciones sobre el código a probar. TestCase, representa un conjunto de pruebas sobre una clase, permite realizar múltiples pruebas sobre sus métodos. TestSuite, permite agrupar diferentes objetos TestCase para su ejecución conjunta. TestResult, permite almacenar los resultados de la ejecución de uno o varios TestCase, de esta forma conoceremos los resultados de las pruebas.
6
Assert Todos sus métodos son estáticos.
Posee métodos para probar todo tipo de condiciones. //Condiciones de igualdad static void assertEquals(boolean expected, boolean actual) static void assertEquals(float expected, float actual, float delta) //Condiciones booleanas static void assertTrue(boolean condition) static void assertFalse(boolean condition) //Condiciones sobre objetos static void assertNull(java.lang.Object object) static void assertNotNull(java.lang.Object object) //Condiciones sobre referenacias a objetos static void assertSame(java.lang.Object expected, java.lang.Object actual) static void assertNotSame(java.lang.Object expected, java.lang.Object actual) Contiene un método fail para indicar de forma explícita que el test ha fallado. static void fail(java.lang.String message)
7
TestCase Representa el conjunto de pruebas que se van a realizar sobre los métodos de una clase. Hereda de Assert, por lo que posee todos sus métodos para la comprobación de condiciones. Implementa la interfaz Test. La forma de utilizar esta clase es heredando de ella para construir nuestras clases de prueba. Sus métodos más importantes son: //Ejecuta los métodos de test (todos los que comienzan por “test”) void run(TestResult result) //Realiza todas las inicializaciones necesarias para la prueba protected void setUp() //Libera todos los recursos utilizados durante la prueba protected void tearDown()
8
TestSuite Representa una conjunto de casos de prueba.
Implementa la interfaz Test, por tanto implementa el método run para la ejecución de los tests. void run(TestResult result) Existen varias formas de utilizarlo: //Creamos un TestSuite y añadimos varios métodos de prueba para ser ejecutados TestSuite suite= new TestSuite(); suite.addTest(new MathTest("testAdd")); suite.addTest(new MathTest("testDivideByZero")); //Creamos un TestSuite a partir de los métodos de test de una clase, es decir //aquellos que comienzan por “test” y no tienen argumentos, simplemente //pasamos la clase y todos los métodos de test se extraen automáticamente para //formar parte del TestSuite TestSuite suite= new TestSuite(MathTest.class);
9
Ejemplo package pruebaBanco; import junit.framework.TestCase;
import miniBanco.*; public class PruebaCtaCte extends TestCase { public void testCrear() { CtaCte cc1 = new CtaCte(11,"Pablo"); CtaCte cc2 = new CtaCte(22,"Juan",3.5); Assert.assertEquals(11,cc1.getNro()); assertEquals(22,cc2.getNro()); assertEquals("Pablo",cc1.getTitular()); assertEquals("Juan",cc2.getTitular()); Assert.assertEquals(3.5,cc2.getDesc_acordado(),0.01); }
10
Ejemplo - 2 package pruebaBanco; import miniBanco.CtaCte;
import junit.framework.TestCase; public class OtraPrueba extends TestCase { CtaCte cc1; CtaCte cc2; protected void setUp() throws Exception { super.setUp(); cc1 = new CtaCte(11,"Pablo"); cc2 = new CtaCte(22,"Juan",3.5); } public void testDepositar() { cc1.depositar(100.5); assertEquals(100.5,cc1.getSaldo(),0.1); cc1.depositar(20); assertEquals(120.5,cc1.getSaldo(),0.1);
11
Excepciones Manejo de excepciones esperadas con Junit, ejemplo:
public void testMetodoQueLanzaExcepcion() { try { //Invocamos el método de forma que deba lanzar una excepción metodoQueLanzaExcepcion(null); //Si el flujo de control pasa por aquí es porque la excepción //no saltó, entonces indicamos que ha habido un fallo fail(“El método debería haber lanzado una excepción”); } catch (RunTimeException e) { //A modo de documentación, para indicar que la prueba ha //tenido éxito el flujo de control ha de pasar por aquí assertTrue(true);
12
Prueba de métodos privados
Probar indirectamente Cambiar el nivel de protección por el de acceso desde el mismo paquete Utilizar clases anidadas Utilizar reflection
13
NUnit Originalmente un 'port' de Junit A partir de la versión 2:
Las clases de prueba no deben heredar de una jerarquía determinada Utiliza [atributos] para especificar las clases de prueba, las pruebas, el setup, etc.
14
Ejemplo using System; namespace Calculadora { public class Calc
public Calc() {} public int Sumar (int n1, int n2) return n1 + n2; } public int Restar (int n1, int n2) return n1 - n2;
15
Ejemplo using System; using Calculadora; using NUnit.Framework;
namespace Pruebas { [TestFixture] public class PruebaCalc { public PruebaCalc() {} [Test] public void ProbarSuma() { Calc c = new Calc(); Assert.AreEqual(3, c.Sumar(1,2)); } public void PorbarResta() Assert.AreEqual(1, c.Restar(2,1));} }
16
Elementos Originalmente un 'port' de Junit A partir de la versión 2:
Las clases de prueba no deben heredar de una jerarquía determinada Utiliza [atributos] para especificar las clases de prueba, las pruebas, el setup, etc.
17
Otros atributos [SetUp] ...[TearDown]
[TestFixtureSetUp] ... [TestFixtureTearDown] [Category("MiCategoria")] [ExpectedException("System.ExcepcionEsperada")] [Ignore("Ignrar esta fixture")]
18
Herramientas Resultados por consola GUI Integración con VS 2003/2005
Ej: TestDriven.Net
19
Otras herramientas Generación automática de casos de prueba a partir de código Separación del código de prueba de los datos de prueba Prueba de sitios web Prueba de interfaces de usuario Otros...
20
Desarrollo mediante pruebas
Test Driven Development (TDD) Primer se escriben las pruebas, luego el código del programa Cada vez que se agrega una funcionalidad se corren las pruebas de todo el sistema Las pruebas se convierten en la principal documentación del sistema Es principalmente una metodología de desarrollo, que además produce código ‘limpio’
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.