-1

estoy haciendo test de una función que me devuelve una Lista con un contenido, yo manualmente en el test introduzco los valores que espero recibir y el contenido es exactamente igual, pero si hago un assertTrue o Assert.assertEquals me devuelve un error diciendo que no son iguales.

Mi test esta hecho de esta forma:

    @Test
    public void transformarRespuestaValidaTest(){
        String respuesta = "OK||CUPON_INFO|1|TIPO_PRO|";
        
        List<CuponInformativoVariableType> cupones_validos = new LinkedList<CuponInformativoVariableType>();
        CuponInformativoVariableType cupon_valido = new CuponInformativoVariableType();
        
        List<CuponInformativoVariableType> cupones = null;
        
        
        cupon_valido.setCuponInformativo("CUPON_INFO");
        cupon_valido.setExclusividad(true);
        cupon_valido.setTipoPromocion("TIPO_PRO");
        
        cupones_validos.add(cupon_valido);
        
        try {
            cupones = ListaPromocionesUtil.transformarRespuesta(respuesta);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
        System.out.println("\nCUPON INFORMATIVO");
        System.out.println(cupones_validos.get(0).getCuponInformativo());
        System.out.println(cupones.get(0).getCuponInformativo());

        System.out.println("\nPROMOCION");
        System.out.println(cupones_validos.get(0).getTipoPromocion());
        System.out.println(cupones.get(0).getTipoPromocion());
        
        
        System.out.println("\nEXCLUSIVIDAD");
        System.out.println(cupones_validos.get(0).isExclusividad());
        System.out.println(cupones.get(0).isExclusividad());
        
        
        assertTrue(cupones_validos.equals(cupones));
}

Y la función a probar es esta:

public static List<CuponInformativoVariableType> transformarRespuesta(String respuesta) throws Exception {
        List<CuponInformativoVariableType> cupones = new LinkedList<CuponInformativoVariableType>();
        respuesta = respuesta.trim();
        String[] splitted = respuesta.split(PIPE);
        // comprobamos que no haya error
        if (!splitted[0].equals("OK")) {
            return null;
        }
        // i=0 es OK, i=1 esta vacio, comenzamos en i=2
        for (int i = 2; i < splitted.length; i++) {
            try {
                CuponInformativoVariableType cupon = new CuponInformativoVariableType();
                cupon.setCuponInformativo(splitted[i]);
                i++;
                cupon.setExclusividad("1".equals(splitted[i]));
                i++;
                cupon.setTipoPromocion(splitted[i]);
                cupones.add(cupon);
            } catch (Exception ex) {
                LogWarning("Error en transformarRespuesta", ex);
            }
        }
        return cupones;
    }

Si esto lo muestro por consola me devuelve esto que es lo que quiero:

CUPON INFORMATIVO CUPON_INFO CUPON_INFO

PROMOCION TIPO_PRO TIPO_PRO

EXCLUSIVIDAD true true

Pero claro, aun teniendo la información que me esperaba recibir me dice que es erronea y esto es lo que me dice que vale cada lista.

cupones_validos : [promociones.CuponInformativoVariableType@59494225]

cupones : [promociones.CuponInformativoVariableType@eec5a4a]

No entiendo el porque me dice que no son iguales y el contenido es igual... No puedo avanzar con el test.

Wail
  • 317
  • 1
  • 10

1 Answers1

0

Te esta dando error, por que esta comparando a nivel Objeto.

cupones_validos : [promociones.CuponInformativoVariableType@59494225] <-- Dirección de cupones validos

cupones : [promociones.CuponInformativoVariableType@eec5a4a] <-- Dirección de cupones.

Necesitas sobreescribir el metodo equals de tu objeto CuponInformativoVariableType, para que valide dato a dato.