Descargar la presentación
La descarga está en progreso. Por favor, espere
1
Test Driven Development
Bernd Biedermann Tomás Henriquez
2
Introducción Codificación Clásica TDD (Test Driven Development)
Se programa y se prueba Exceso de errores y falta de tiempo TDD (Test Driven Development) Programar pruebas Codificar para la prueba
3
Que son las Test Units? Programas para probar clases
No son pruebas de requerimiento o aceptación Kent Beck, Chrysler C3 Project, Smalltalk Portado a Java, JUnit …
4
NUnit Testing Framework
Version para .NET Introduce los Attributes Utililiza Attributes para encontrar tests dentro del código
5
NUnit Testing Framework
6
Attributes TestFixture Test Setup & Teardown ExpectedExeption Ignore
7
Attributes Ejemplo namespace UnitTestingExamples { using System;
using NUnit.Framework; [TestFixture] public class SomeTests [Test] [Ignore(“Nos saltamos esta.")] public void TestOne() // Aquí ponemos codigo de prueba }
8
Assertion Class Clase para hacer Asserts
Contiene un set de funciones para usar en los tests
9
Assertion Class Ejemplo
namespace UnitTestingExamples { using System; using NUnit.Framework; [TestFixture] public class SomeTests [Test] public void TestOne() int i = 4; Assertion.AssertEquals( 4, i ); }
10
NUnit con TDD Escribir un test.
Correr el test. Falla por que el codigo aun no existe! Escribir un esqueleto vacio para que el test compile. Correr el Test. Deberia fallar, o el test no esta bien diseñado. Implementar el codigo que pasa el test. Correr el test. Deberia pasar. Si no lo hace, revisar el codigo Comenzar de nuevo con otro test
11
Diagrama de Integración
12
Mock Objects Tests prueban más de una clase
Mock Objects aíslan las clases para las pruebas Obtención de feedback
13
Mock Objects Fáciles de hacer Fáciles de instalar Rápidos
Determinísticos (producen resultados predecibles) Permiten una fácil verificación de que se hicieron las llamas correctas en el orden correcto
14
Mock Objects en la Arquitectura
15
Un Primer MockObject [Test] public void MiTest () { Declaracion del Objeto Creacion de una instancia del Mock Inicializar el objeto como MockObject Declarar lo que se espero que pase Llamar el Metodo; Verificar }
16
Mock Object con NMock Para declarar un Mock Object
DynamicMock MiMock = new DynamicMock (typeof (Interface));
17
Verificar la llamada Declaramos un objeto:
Objeto miObjeto = new Objeto(); Lo llamamos con el MockObject: clase.Metodo ((Interface) MiMock.MockInstance); Declaramos lo que esperamos que pase: MiMock.Expect (“MetodoEsperado",valor esperado); llamada al metodo Verificacion: MiMock.Verify ();
18
Ejemplo Los Gatos interface ICat { string Name { get; set; } void Eat (); void Sleep (); void Meow (); }
19
Primera Clase class CatSitter { ArrayList _cats = new ArrayList (); public void TakeCareOf(ICat cat) { _cats.Add (cat); } public virtual void DoWork () { foreach (ICat cat in _cats) { FeedCat (cat); } } private void FeedCat (ICat cat) { cat.Eat (); } }
20
Segunda Clase class LazyCatSitter : CatSitter { public override void DoWork() { // no hace nada } }
21
Primer Test [Test] public void LazyCatSitterTest () { LazyCatSitter lazyCatSitter = new LazyCatSitter(); DynamicMock funnyBunny = new DynamicMock (typeof (ICat)); DynamicMock baerchen = new DynamicMock (typeof (ICat)); lazyCatSitter.TakeCareOf ((ICat) funnyBunny.MockInstance); lazyCatSitter.TakeCareOf ((ICat) baerchen.MockInstance); funnyBunny.Expect ("Eat", null); // esperamos que sea invocado baerchen.Expect ("Eat", null); // el metodo Eat. lazyCatSitter.DoWork (); funnyBunny.Verify (); // Verificamos que se haya llamado baerchen.Verify (); // el metodo }
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.