¿Cuál es la mejor manera de probar una producción de objetos de terceros que carecen de una buena igualdad de fábrica / constructor?

votos
2

Como ejemplo; Estoy trabajando en un generador para producir Apache HttpUriRequests.

Mi prueba es el siguiente:

@Test
public void testRequestGet() {
    HttpUriRequest request = RequestBuilder.request(http://www.google.com).get();

    assertEquals(new HttpGet(http://www.google.com), request);
}

Esta falla, al parecer porque HttpGet no tiene #equals definidas, y otros valores por defecto a objeto # es igual.

Podría probar manualmente la igualdad de todos los componentes de la producida HttpGet para verificar que son lo que esperar- que es muy fácil ahora, pero probablemente voy a poner feo una vez cabeceras, parámetros, etc. comienza a recibir involucrados (más el ruido adicional que probar HttpEntity haré plantear una vez añado #post () para el constructor).

Antes de ir por ese camino, yo pensé en preguntar si hay una mejor aproximación a esta categoría general de problema.

Publicado el 27/11/2018 a las 16:47
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Bueno, me siento tonta.

EqualsBuiilder tiene una opción para probar de forma recursiva.

@Test
public void testGetRequest() {
    HttpGet request = RequestBuilder.request("http://www.google.com").get();

    HttpGet expected = new HttpGet("http://www.google.com");

    assertEquals(true, new EqualsBuilder().setTestRecursive(true).reflectionAppend(expected, request).isEquals());
}

funciona de la manera que quería :)

Respondida el 27/11/2018 a las 18:43
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more