Algoritmos y programaci - PowerPoint PPT Presentation

1 / 20
About This Presentation
Title:

Algoritmos y programaci

Description:

Algoritmos y programaci n III (75.07) Pruebas Automatizadas JUnit - NUnit Temario Introducci n a JUnit Descripci n Clases involucradas Casos particulares de ... – PowerPoint PPT presentation

Number of Views:95
Avg rating:3.0/5.0
Slides: 21
Provided by: listasFiU
Category:

less

Transcript and Presenter's Notes

Title: Algoritmos y programaci


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 www.junit.org.

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 junit.framework.
  • 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)

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))
Test public void PorbarResta() Calc c
new Calc() 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
Write a Comment
User Comments (0)
About PowerShow.com