Autor Tema: Java ejemplo test unitarios con Junit, pruebas Assert Assert.equals  (Leído 7439 veces)

ivan15

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Hola, estuve haciendo este ejercicio que me dieron

Citar
2. Implementar la clase DiasLluviosos, con sus respectivas pruebas unitarias, donde se almacene si llovió o no en un día del año y cuente con los siguientes métodos:

- void registrarQueLlovioElDia (int diaDeAño, boolean llovio)

- boolean consultarSiLlovioElDia (int diaDelAño)

- int contarDiasLluviosos ()

- int consultarCuatrimestreMasLluvioso()

- int consultarPrimerDiaConLluvia()


Pero me tira un error cuando quiero hacer una prueba con jUnit para probar el cuatrimestre mas lluvioso, alguien podria darme alguna mano?


aca dejo el codigo del pronostico:

Código: [Seleccionar]
package guia7Arrays;

public class DiasLluviosos {

private boolean[] dias;

public DiasLluviosos() {

dias = new boolean[365];
for (int i = 0 ; i < dias.length ; i++) {
dias[i] = false;

}

}

public void registrarQueLlovioElDia(int diaDeAño, boolean llovio) {

validarDia(diaDeAño);
dias[diaDeAño] = llovio;

}

public boolean consultarSiLlovioElDia(int diaDelAño) {

validarDia(diaDelAño);
return dias[diaDelAño];
}

public int contarDiasLluviosos() {

int diasLluviosos = 0;

for(int i = 0; i < dias.length ; i++) {

if(dias[i] == true) {
diasLluviosos++;

}

}

return diasLluviosos;
}

public int consultarCuatrimestreMasLluvioso() {

int cuatrimestreMasLluvioso = 0;
int cuatrimestres[];
cuatrimestres = new int[3];

cuatrimestres[0] = diasLlovidosEnRango(1 , 121);
cuatrimestres[1] = diasLlovidosEnRango(121 , 243);
cuatrimestres[2] = diasLlovidosEnRango(244 , 365);

if(cuatrimestres[0] < cuatrimestres[1] ) {
cuatrimestreMasLluvioso = 0;

} else {

if(cuatrimestres[0] < cuatrimestres[2] ) {
cuatrimestreMasLluvioso = 1;

}

}

if(cuatrimestres[1] < cuatrimestres [2] ) {
cuatrimestreMasLluvioso = 2;

}

return cuatrimestreMasLluvioso;

}

public int consultarPrimerDiaConLluvia() {

boolean primerDiaLluviosoNoEncontrado = true;
int primerDiaConLluvia = 0;

for(int i = 0 ; i < dias.length && primerDiaLluviosoNoEncontrado ; i++ ) {

if(dias[i] == true) {
primerDiaLluviosoNoEncontrado = false;
primerDiaConLluvia = i;

}

}

return primerDiaConLluvia;

}

private int validarDia(int diaDeAño) {

Error diaIncorrecto = new Error("dia fuera del rango (0 ; 365]");

if(diaDeAño <= 0 || diaDeAño > 365) {
throw diaIncorrecto;

}

return diaDeAño;

}

private int diasLlovidosEnRango( int inicio, int fin ){

int total = 0;

for( int i = inicio; i <= fin; i++ ) {

if ( dias[i] ) {
total++;

}

}

return total;
}

}



y aca el codigo de la prueba que me tira error, es la que se llama consultarCuatrimestreMasLluvioso

Código: [Seleccionar]
package pruebasJUnit;
import guia7Arrays.DiasLluviosos;
import org.junit.Test;
import org.junit.Assert;

public class pruebasDiasLluviosos {

@Test
public void probarSiInicializaConTodosLosDiasSinLlover() {

DiasLluviosos dias = new DiasLluviosos();

int diasConLluvia = dias.contarDiasLluviosos();

Assert.assertEquals(0, diasConLluvia);

}

@Test
public void probarSiRegistraDiasLluviosoYLosCuenta() {

DiasLluviosos dias = new DiasLluviosos();

dias.registrarQueLlovioElDia(1, true);
dias.registrarQueLlovioElDia(2, true);
dias.registrarQueLlovioElDia(3, true);
int diasConLluvia = dias.contarDiasLluviosos();

Assert.assertEquals(3, diasConLluvia);

}

@Test
public void probarConsultarSiLlovioElDia() {

DiasLluviosos dias = new DiasLluviosos();

dias.registrarQueLlovioElDia(3, true);
boolean llovioElDia = dias.consultarSiLlovioElDia(3);

Assert.assertTrue(llovioElDia);

}

@Test
public void probarConsultarPrimerDiaConLluvia() {

DiasLluviosos dias = new DiasLluviosos();

dias.registrarQueLlovioElDia(340, true);
int primerDiaQueLlovio = dias.consultarPrimerDiaConLluvia();

Assert.assertEquals(340, primerDiaQueLlovio);

}

@Test
public void consultarCuatrimestreMasLluvioso() {  /*<--------Preguntar porque me tira error en esta prueba*/

DiasLluviosos dias = new DiasLluviosos();

dias.registrarQueLlovioElDia(121, true);
dias.registrarQueLlovioElDia(130, true);
dias.registrarQueLlovioElDia(140, true);
dias.registrarQueLlovioElDia(145, true);
dias.registrarQueLlovioElDia(150, true);
dias.registrarQueLlovioElDia(160, true);
dias.registrarQueLlovioElDia(166, true);
dias.registrarQueLlovioElDia(200, true);

int cuatrimestreMasLluvioso = dias.consultarCuatrimestreMasLluvioso();

Assert.assertEquals(1 , cuatrimestreMasLluvioso);

}

}

tambien les dejo el error que me tira, saludos y gracias de ante mano

« Última modificación: 26 de Octubre 2015, 12:04 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Java ejemplo test unitarios con Junit, pruebas Assert Assert.equals
« Respuesta #1 en: 26 de Octubre 2015, 12:04 »
Hola!

Aquí parece que tienes un problema: i <= fin dentro del método private int diasLlovidosEnRango( int inicio, int fin )

Código: [Seleccionar]
    private int diasLlovidosEnRango( int inicio, int fin ){

        int total = 0;

        for( int i = inicio; i <= fin; i++ ) {

            if ( dias[i] ) {
                total++;

            }

        }

        return total;
    }

Los índices del array de días van de 0 a 364, si tú haces una llamada como cuatrimestres[2] = diasLlovidosEnRango(244 , 365);

al pasar el 365 no estás dentro de los índices del array y te tira un error.

Tienes que pensar si estos índices:

Código: [Seleccionar]
        cuatrimestres[0] = diasLlovidosEnRango(1 , 121);
        cuatrimestres[1] = diasLlovidosEnRango(121 , 243);
        cuatrimestres[2] = diasLlovidosEnRango(244 , 365);

Debes cambiarlos

Código: [Seleccionar]
        cuatrimestres[0] = diasLlovidosEnRango(0 , 120);
        cuatrimestres[1] = diasLlovidosEnRango(121 , 242);
        cuatrimestres[2] = diasLlovidosEnRango(243 , 364);

Habría que revisar todos los índices y hacer pruebas.

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

ivan15

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 21
    • Ver Perfil
Re:Java ejemplo test unitarios con Junit, pruebas Assert Assert.equals
« Respuesta #2 en: 28 de Octubre 2015, 03:39 »
gracias, muchas gracias ya pude arreglarlo! era eso que mencionaste

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".