Laboratorio TDD

Objetivo

El objetivo de este laboratorio es que el estudiante pueda aplicar los conceptos de TDD (Test Driven Development) en la creación de una clase que permita realizar operaciones aritméticas básicas.

Desarrollo

  1. Crear un proyecto de Java en Intelligent Idea llamado Calculadora y una clase llamada Calculadora con los siguientes métodos:
public class Calculadora {
    public int sumar(int a, int b) {
        return a + b;
    }

    public int restar(int a, int b) {
        return a - b;
    }

    public int multiplicar(int a, int b) {
        return a * b;
    }

    public int dividir(int a, int b) {
        return a / b;
    }
}
  1. Crear una clase llamada CalculadoraTest con los siguientes métodos:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class CalculadoraTest {
    @Test
    public void testSumar() {
        Calculadora calculadora = new Calculadora();
        assertEquals(5, calculadora.sumar(2, 3));
    }

    @Test
    public void testRestar() {
        Calculadora calculadora = new Calculadora();
        assertEquals(2, calculadora.restar(5, 3));
    }

    @Test
    public void testMultiplicar() {
        Calculadora calculadora = new Calculadora();
        assertEquals(6, calculadora.multiplicar(2, 3));
    }

    @Test
    public void testDividir() {
        Calculadora calculadora = new Calculadora();
        assertEquals(2, calculadora.dividir(6, 3));
    }
}
  1. Ejecutar los tests y verificar que todos los tests pasen.

Reto

  1. Crear un método llamado potencia en la clase Calculadora que reciba dos parámetros enteros y devuelva el resultado de elevar el primer parámetro a la potencia del segundo parámetro.

  2. Crear un test llamado testPotencia en la clase CalculadoraTest que verifique que el método potencia funciona correctamente.

  3. Ejecutar los tests y verificar que todos los tests pasen.

TDD con Python

  1. Crear un proyecto de Python llamado Calculadora y un archivo llamado calculadora.py con los siguientes métodos:
class Calculadora:
    def sumar(self, a, b):
        return a + b

    def restar(self, a, b):
        return a - b

    def multiplicar(self, a, b):
        return a * b

    def dividir(self, a, b):
        return a / b
  1. Crear un archivo llamado test_calculadora.py con los siguientes métodos:
import unittest
from calculadora import Calculadora

class TestCalculadora(unittest.TestCase):
    def test_sumar(self):
        calculadora = Calculadora()
        self.assertEqual(5, calculadora.sumar(2, 3))

    def test_restar(self):
        calculadora = Calculadora()
        self.assertEqual(2, calculadora.restar(5, 3))

    def test_multiplicar(self):
        calculadora = Calculadora()
        self.assertEqual(6, calculadora.multiplicar(2, 3))

    def test_dividir(self):
        calculadora = Calculadora()
        self.assertEqual(2, calculadora.dividir(6, 3))

if __name__ == '__main__':
    unittest.main()
  1. Ejecutar los tests y verificar que todos los tests pasen.

Reto

  1. Crear un método llamado potencia en la clase Calculadora que reciba dos parámetros enteros y devuelva el resultado de elevar el primer parámetro a la potencia del segundo parámetro.

  2. Crear un test llamado test_potencia en la clase TestCalculadora que verifique que el método potencia funciona correctamente.

  3. Ejecutar los tests y verificar que todos los tests pasen.

TDD con JavaScript

  1. Creamos un proyecto con npm y ejecutamos el siguiente comando:
npm init -y
  1. Instalamos Jest con el siguiente comando:
npm install --save-dev jest
  1. Creamos un archivo llamado calculadora.js con los siguientes métodos:
class Calculadora {
    sumar(a, b) {
        return a + b;
    }

    restar(a, b) {
        return a - b;
    }

    multiplicar(a, b) {
        return a * b;
    }

    dividir(a, b) {
        return a / b;
    }
}

module.exports = Calculadora;
  1. Creamos un archivo llamado calculadora.test.js con los siguientes métodos:
const Calculadora = require('./calculadora');

test('sumar 2 + 3 es igual a 5', () => {
    const calculadora = new Calculadora();
    expect(calculadora.sumar(2, 3)).toBe(5);
});

test('restar 5 - 3 es igual a 2', () => {
    const calculadora = new Calculadora();
    expect(calculadora.restar(5, 3)).toBe(2);
});

test('multiplicar 2 * 3 es igual a 6', () => {
    const calculadora = new Calculadora();
    expect(calculadora.multiplicar(2, 3)).toBe(6);
});

test('dividir 6 / 3 es igual a 2', () => {
    const calculadora = new Calculadora();
    expect(calculadora.dividir(6, 3)).toBe(2);
});
  1. Agregamos el siguiente script en el archivo package.json:
"scripts": {
    "test": "jest"
}
  1. Ejecutamos los tests con el siguiente comando:
npm test

Reto

  1. Crear un método llamado potencia en la clase Calculadora que reciba dos parámetros enteros y devuelva el resultado de elevar el primer parámetro a la potencia del segundo parámetro.

  2. Crear un test llamado testPotencia en el archivo calculadora.test.js que verifique que el método potencia funciona correctamente.

  3. Ejecutar los tests y verificar que todos los tests pasen.

Conclusión

El TDD (Test Driven Development) es una técnica de desarrollo de software que consiste en escribir primero los tests y luego el código que hace que los tests pasen. Esta técnica nos permite escribir código de calidad y con menos errores.

En este laboratorio hemos aplicado los conceptos de TDD en la creación de una clase que permite realizar operaciones aritméticas básicas. Hemos creado los tests antes de escribir el código y hemos verificado que todos los tests pasen.