Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Test negativo JUnit

Estas en el tema de Test negativo JUnit en el foro de Java en Foros del Web. Hola buenas, vengo a pediros ayuda con una duda que me surgió con el Junit, si bien he logrado realizar los test positivos de forma ...
  #1 (permalink)  
Antiguo 02/10/2015, 12:02
 
Fecha de Ingreso: enero-2015
Ubicación: Gijon
Mensajes: 10
Antigüedad: 4 años, 10 meses
Puntos: 1
Pregunta Test negativo JUnit

Hola buenas, vengo a pediros ayuda con una duda que me surgió con el Junit, si bien he logrado realizar los test positivos de forma correcta, no se como hacer que los test negativos funcionen correctamente.

Ya se de antemano que los primeros parametros de los asserEquals en los tests negativos son incorrectos, y ahi es donde reside mi duda, que poner.

El funcionamiento del metodo setAge, esta limitado a un rango [0,118], definido por las variables MIN_AGE_VALUE y, MAX_AGE_VALUE

Muchas gracias de antemano, estoy empezando con JUnit y es un poco confuso para mi.

Test Class:
Código:
    @Test
    public void testAge()
    {
        
        Person dummy = new Person();
        //Positive testing
        dummy.setAge(Person.MIN_AGE_VALUE);
        assertEquals(Person.MIN_AGE_VALUE, dummy.getAge());
        
        dummy.setAge(Person.MAX_AGE_VALUE);
        assertEquals(Person.MAX_AGE_VALUE, dummy.getAge());
        
        dummy.setAge(Person.MAX_AGE_VALUE/2);
        assertEquals(Person.MAX_AGE_VALUE/2, dummy.getAge());
        
        //Negative testing
        dummy.setAge(Person.MIN_AGE_VALUE);
        assertEquals(Person.MIN_AGE_VALUE, dummy.getAge());
        
        dummy.setAge(Person.MIN_AGE_VALUE-1000);
        assertEquals(Person.MIN_AGE_VALUE, dummy.getAge());
            
        dummy.setAge(Person.MAX_AGE_VALUE+1);
        assertEquals(Person.MAX_AGE_VALUE+1, dummy.getAge());
        
        dummy.setAge(Person.MAX_AGE_VALUE*2);
        assertEquals(Person.MAX_AGE_VALUE*2, dummy.getAge());
    }
Person Class
Código:
   
   public int age;
   public final static int MAX_AGE_VALUE = 118;
   public final static int MIN_AGE_VALUE = 0;

public void setAge (int age)
    {
        if ((age >= MIN_AGE_VALUE) && (age <= MAX_AGE_VALUE))
            this.age = age;
    }
public int getAge () 
    {
        return age;
    }
Existe mas código, pero no es relevante.
  #2 (permalink)  
Antiguo 02/10/2015, 12:33
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 5 años, 3 meses
Puntos: 182
Respuesta: Test negativo JUnit

Buenas,

Y cual es el problema? No explicas que es lo que te sale mal.

El segundo test negativo (el primero es correcto) deberia fallar y por lo tanto el test completo testAge() deberia estar marcado como erroneo.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 02/10/2015, 12:48
 
Fecha de Ingreso: enero-2015
Ubicación: Gijon
Mensajes: 10
Antigüedad: 4 años, 10 meses
Puntos: 1
Respuesta: Test negativo JUnit

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Buenas,

Y cual es el problema? No explicas que es lo que te sale mal.

El segundo test negativo (el primero es correcto) deberia fallar y por lo tanto el test completo testAge() deberia estar marcado como erroneo.

Un saludo
Primero muchas gracias por contestar

Es curioso, el primer test negativo es correcto por estar mal formulado, deberia ser MIN_AGE_VALUE-1

La cuestion que planteo es que en efecto es erroneo, y no se que valor tengo que poner en el "expected value parameter".

Lo que busco es que el valor esperado, y el valor asignado no sean el mismo. Busqué algún modo de que el assertEquals funcionase como un operador OR, algo del estilo assertNotEquals(), pero no encontre nada.

Espero haberme explicado bien.
  #4 (permalink)  
Antiguo 03/10/2015, 02:46
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 5 años, 3 meses
Puntos: 182
Respuesta: Test negativo JUnit

Cita:
Lo que busco es que el valor esperado, y el valor asignado no sean el mismo. Busqué algún modo de que el assertEquals funcionase como un operador OR, algo del estilo assertNotEquals(), pero no encontre nada.
Y por que no utilizas assertTrue y assetFalse? No te parecen mas sencillos de usar?

Código Java:
Ver original
  1. dummy.setAge(Person.MIN_AGE_VALUE-1000);
  2. assetTrue(Person.MIN_AGE_VALUE != dummy.getAge());

Que seria lo mismo que

Código Java:
Ver original
  1. dummy.setAge(Person.MIN_AGE_VALUE-1000);
  2. assetFalse(Person.MIN_AGE_VALUE == dummy.getAge());

Un saludo
__________________
If to err is human, then programmers are the most human of us

Etiquetas: negativo, test
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:50.