Tests & Refactoring
Esta clase plantea una solución poco objetosa a un ejercicio. El objetivo es primero testearla codeando pruebas automatizadas y luego refactorizarla aprovechando las ideas del paradigma.
Objetivos de esta clase
- Comparar soluciones más algorítimicas vs más objetosas
- Formalizar las pruebas del programa
- Pasar de la consola al código con
tests - Plantear los casos de prueba (a.k.a clases de equivalencia)
- Pasar de la consola al código con
- Seguir con la metodología propuesta
- Pienso las pruebas antes de tocaar el código
- El testing forma parte del desarrollo
- Se puede mejorar el diseño sin cambiar la funcionalidad
Elementos del lenguaje
ifnull- Ejercutar tests por consola
Apuntes teóricos
Tamagotchi
Los Tamagotchi son mascotas virtuales que tuvieron su pico de popularidad en los 2000. Se trataban de aparatos que venían con un bichito que te demandaba cuidado. Había que hacerlos jugar, comer, bañar, etc. para que estén contentos, crezcan fuertes y no mueran.
Enunciado
Modelar un Tamagotchi del cual se conoce su edad, felicidad y el estado de ánimo, que puede ser hambriento o cansado (uno de los dos)
Un Tamagotchi puede jugar:
- si está cansado pasa a estar hambriento
- si está hambriento reduce su felicidad en 2
- sino auntenta su felicidad en 1
Y también puede comer:
- si está hambriento crece, lo que aumenta en uno su edad y se le va cualquier estado de ánimo que tenga
- si está cansado reduce su felicidad en 1
- además, idenpendiente de los casos anteriores, si su edad es mayor a 10, queda cansado
Al iniciar el aparato, el Tamagotchi comienza con 10 de felicidad, 0 de edad y sin ningún estado de ánimo
Solución
Se plantea una solución que modela el estado de ánimo con un string (nullable), teniendo ifs en los métodos jugar() y comer()
Link al código
Leer el código en conjunto para entender los if
1. Pruebas automatizadas
Preguntas gatillo
¿Este programa soluciona lo pedido?
Respuesta: sí
¿Cómo lo sabemos?
Respuesta: eso creemos, para garantizarlo habría que probarlo
Tests
Introducimos la idea de testing
- son pruebas automatizadas que podemos ejecutar
- código que prueba que el otro código anda como se espera
- independientes y reproducibles
- "el mundo se reinicia entre cada ejecución"
- estructura:
- preparo
- ejecuto
- compruebo (esto es nuevo!)
#TODO
- Escribir los casos de prueba
- Cambiar el código para que use polimorfismo