Cuando una clase hija hereda de un padre (Guerrero extends Personaje), debe seguir cumpliendo las reglas del padre pero comportarse a su manera en los métodos sobrescritos (@Override). Un test unitario nos permite asegurar que el hijo realmente es un padre y que sus ataques especiales funcionan.
Validando comportamientos heredados
JAVA
1@Test
2voidtestGuerreroEsUnPersonaje() {
3 Personaje p = newGuerrero("Hercules");
4// Assert 1: ¿De verdad es un Personaje?
5assertTrue(p instanceof Personaje);
6}
7
8@Test
9voidtestAtaqueGuerrero() {
10 Guerrero g = newGuerrero("Kratos");
11int danio = g.atacar();
12// Suponemos que el padre ataca 10, pero el guerrero ataca 25
13assertEquals(25, danio, "El ataque del guerrero debería ser mayor");
14}
👨💻 Ejercicio Práctico 1
Misión: El objeto familiar
Crea un objeto de tipo Ave p = new Pinguino() en tu test. Usa assertTrue con el operador instanceof para verificar su herencia.
👁️ Ver solución propuesta
Código
JAVA
1@Test
2voidtestEsAve() {
3 Ave p = newPinguino();
4assertTrue(p instanceof Ave);
5}
👨💻 Ejercicio Práctico 2
Misión: Super Constructor
Si el padre Vehiculo asigna un ID automático, verifica que new Coche().getId() no sea nulo usando assertNotNull.
👁️ Ver solución propuesta
Código
JAVA
1@Test
2voidtestIdHeredado() {
3 Coche c = newCoche();
4assertNotNull(c.getId());
5}
Ponte a prueba
¿Tus clases hijas son dignas sucesoras?
QuizQuiz: Herencia bajo Test
Son 5 preguntas de opción múltiple sobre esta lección. ¡Evalúa tus conocimientos!
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.