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

Date y ArrayList en Junit

Estas en el tema de Date y ArrayList en Junit en el foro de Java en Foros del Web. Buenas Dos preguntas de newbie sobre Junit y tipos de datos DATE y ARRAYLIST Quiero hacer una sentencia tal que... Código PHP:     assertEquals ( "Mon Jan 01 00:00:00 CET 2001" ...
  #1 (permalink)  
Antiguo 14/12/2015, 14:24
 
Fecha de Ingreso: octubre-2012
Mensajes: 38
Antigüedad: 11 años, 6 meses
Puntos: 0
Date y ArrayList en Junit

Buenas

Dos preguntas de newbie sobre Junit y tipos de datos DATE y ARRAYLIST

Quiero hacer una sentencia tal que...

Código PHP:
    assertEquals("Mon Jan 01 00:00:00 CET 2001"miRestaurante.getFecha()); 
y claro, observo que estoy comparando un STRING, con el resultado date que devuelve getFecha. La fecha es esa, pero no va a validar, en tanto que un tipo es date y el otro String. ¿Como se haría en este caso?

Y lo mismo pero algo diferente

Si intento...

Código PHP:
assertArrayEquals(ArrayList<plato>, miRestaurante.getMenu()); 
¿como sería esto? He importado "import static org.junit.Assert.assertArrayEquals;" lo primero, y ahora lo que pretendo es comparar si ese ArrayList (que contiene 1 string) con el mismo arraylist que me va a devolver getMenu, simplemente es que no encuentro la sintaxis a usar.

Gracias de antemano
  #2 (permalink)  
Antiguo 14/12/2015, 15:36
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Date y ArrayList en Junit

Hola:

En el primer caso, convierte el date a String, basta llamar al método toString()

Código Java:
Ver original
  1. assertEquals("Mon Jan 01 00:00:00 CET 2001", miRestaurante.getFecha().toString());

En el segundo caso, se llamará al método equals() de ArrayList para saber si son iguales o no. Si miras la API de ArrayList, en el método equals() https://docs.oracle.com/javase/7/doc...tractList.html verás que ambas listas deben tener el mismo número de elementos y se llamará al equals() de cada elemento, así que tu clase "plato" debería tener un método equals() que diga si dos platos son o no iguales.

Tendrías además que construir un ArrayList con lo que esperes, y comparar ese

Código Java:
Ver original
  1. ArrayList<plato> menuEsperado = new ArrayList<plato>();
  2. menuEsperado.add(....);
  3. ...
  4. assertArrayEquals(menuEsperado, miRestaurante.getMenu());

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 14/12/2015, 16:22
 
Fecha de Ingreso: octubre-2012
Mensajes: 38
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Date y ArrayList en Junit

No, me he explicado mal respecto al segundo punto (el primero pensé que sería poco elegante hacerlo así, pero no tengo criterio en absoluto soy muy nuevo en esto).

En el segundo caso, tengo una clase Restaurante (es mejor verlo como una reserva), que tiene atributos, uno de ellos es menu, que es un arraylist que a través del setMenu le voy pasando strings llamados "plato". Plato no es una clase, es cada uno de los strings que tiene el ArrayList. El ArrayList menu puede contener entre 0, y N veces plato. Según a través del setMenu cuantas veces lo hayamos ido cargando.

Pero llegado a practicar con Junit, intento hacer algo como

Código PHP:
assertEquals("[Pizza]"miRestaurante.getMenu()); 
Si hubiese cargado varias veces plato, haria p.ej

Código PHP:
assertEquals("[Pizza, Macarrones, Chuleta]"miRestaurante.getMenu()); 
por que es lo que esperaría recibir :)

En mi caso de ¿control?, he instanciado mi objeto Restaurante y le he pasado como variable plato por el SetMenu Pizza, y he hecho un add al ArrayList, por lo que getMenu me devuelve [Pizza], que lo quiero comparar con "[Pizza]", pero me dice que

java.lang.AssertionError: expected: java.lang.String<[Pizza]> but was: java.util.ArrayList<[Pizza]>


Claro, es un problema de tipos, estoy comparando String "[Pizza]" con un elemento pizza (las [] las pone solas) del ArrayList. :( No se si habrá otra resolución mejor, pero lo he solucionado con el mismo sistema del toString :) Muchas gracias.

Última edición por trulari; 14/12/2015 a las 17:07
  #4 (permalink)  
Antiguo 15/12/2015, 07:21
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Date y ArrayList en Junit

Hola:

getMenu() devuelve un ArrayList, no un [Pizza] ni nada parecido. Un ArrayList siempre será distinto de un String, son tipos distintos, así que tienes el mismo problema que en el primer punto (el de las fechas).

Tus opciones son ahora dos. Una es la de antes, convertir el ArrayList a String con toString(), para que sea efectivamente un String que contiene [Pizza]

Código Java:
Ver original
  1. assertEquals("[Pizza]", miRestaurante.getMenu().toString());

o bien comparar un elemento concreto del arraylist (solo tienes uno), asi

Código Java:
Ver original
  1. assertEquals("[Pizza]", miRestaurante.getMenu().get(0));

siempre y cuando tu ArrayList sea de String.

Y una tercera opción es la que te comenté antes. En el primer parámetro no pongas un String, sino directamente un ArrayList relleno como a tí te guste.

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: arraylist, date, string
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 02:38.