Archivos de la categoría Java

Uso de librería Hamcrest




Hola de nuevo.

Después de mucho tiempo sin escribir, creo que ya era hora que probara cosas nuevas. Tras visualizar las charlas de la CAS2013, me puse a escuchar la de Joaquin Engelmo , Adicto al verde. Esta charla me la recomendaron Soraya Vay y Javier Gamarra, los cuales asistieron a esa conferencia Agile Spain. Os recomiendo encarecidamente que veáis esa charla.

Una de todas las herramientas que expuso me quedé con una de fácil complementación y de fácil uso, como es la librería hamcrest. Esta librería permite hacer los assert con un mayor sentido semántico. Los assertEquals, assertTrue, … de toda la vida, tienes que pensar que poner en cada uno de los parámetros.

Ej: El assertEquals(parametro1, parametro2) se suele poner en parametro1 el valor esperado y en el parametro2 el valor obtenido. Esto es si te acuerdas el orden, ya que cuando estas escribiendo el assert se suele dudar al no ser este orden obligatorio.

Pues con la librería Hamcrest, esto no vuelve a pasar. Pasamos del assertEquals(parametro1, parametro2); a assertThat(NOMBRE_TEST, equalTo(user.getNombre())); Como vemos, no solucionamos lo del orden de valor esperado y lo de valor obtenido, pero nuestro assert mejora en su significado semántico.

Partimos de esta clase sobre la que queremos hacer test:

User.java

Una vez que tenemos esta clase de origen, realizamos los test para cada uno de sus atributos.

UserTest

 

Como vemos, la semántica adquiere mayor valor.

Pasos para implementar esta librería (por si acaso XD):

Descargarse la librería desde el sitio oficial Hamcrest-Descarga y descargarse la “hamcrest-all-1.3.jar” e incorporarla al proyecto del test (tanto en la carpeta de lib y en el buildpath)… y YA TAAAAAAA. Ahora, si se quiere tener la navegación, descargaros “hamcrest-all-1.3-sources.jar”. Todo esto lo tenéis por separado o en el archivo “hamcrest-1.3.zip”.

Conclusiones rápidas e incluso diría poco ciertas:

  • Con poco esfuerzo podemos dar un mayor valor semántico a nuestros assert de los test
  • Nos permite seguir utilizando los assert anteriores por si no nos sentimos cómodos con esta librería, lo que no nos ata a ella.
  • Si estamos utilizándola significa que estamos haciendo test, aunque sea solo para probarla. Otra razón por si todavía hay indecisos (y es que los hay).
Hacer test, probarla, seguir haciendo test… VERDE es bueno y ROJO solo es el paso anterior al VERDE, que es bueno