jueves, 5 de febrero de 2009

Día 16: Log, Colecciones, Consejos y Test

loggin
Primeramente recojemos las librerías: commons-logging-1.1.1.jar y log4j-1.2.15.jar y las colocamos en una carpeta "Librerias" de nuestro Workspace del Eclipse (para tenerlo más a mano) y en los proyectos que vayamos a realizar simplemente los seleccionamos y los arrastramos a la carpeta "lib" del proyecto.

La clase Log (del cual crearemos una variable de ésta clase llamado logger) es capaz de mostrar información según el nivel que le pongamos.

De mayor a menor gravedad:
fatal: Para errores fatales.
error: Lanza un mensaje de la causa del error.
warn: Lanza un aviso.
info: Para mostrar alguna información importante.
debug: Imprimir lo que sea para depuración.

Si se quiere ver un mensaje de tipo warn, el info y el debug no se verá.

Crearemos un nuevo xml que sera un archivo de source pero para no mezclar el xml con el código.
Creamos un nuevo source folder, en paralelo al src de toda la vida y creamos un archivo nuevo xml y copiamos: Codigo
Una vez hecho podemos ver la estructura de un xml que configura el logger.
Lo primero que vemos es la configuración que le da al logger, para que la información que queramos mostrar aparezca en la consola, esa parte no la tocamos.
En otro elemento del documentor podemos especificarle el paquete y el nivel de información que se mostrará y con eso nos damos cuenta la gran utilidad de agrupar un proyecto en varios paquetes para que cada uno pueda mostrar un nivel u otro.


Hacemos una revisión de las colecciones de objetos: Colecciones



Tipos de colecciones de objetos
Lista: Colección de elementos que pueden ser repetidos y se ordenan desde 0 en adelante.
Set: Si se le añade dos objetos iguales, pasa de nosotros y sólo mete 1.
Map: Es una colección de claves-valor. Son objetos ambas.
TreeSet o TreeMap: directamente ordena los elementos que les introduzcamos.

Clases de utilidades:
Collections: Conviete una enumeración en una colección, y otras conversiones, ordena listas, etc
Arrays:

testNG - Repaso
Creamos un nuevo proyecto, le ponemos el nombre que queramos y ahora:
Le decimos que haga 2 source folder: src y test
En la pestaña de "Libraries" le añadimos un JAR externo: "testng-5.8-jdk15.jar" y finalizamos la creación.
Si esto último nos lo saltamos podemos hacer: boton derecho sobre el nombre del proyecto>Build Path>configure build path>pestaña librerias>add external jars>seleccionaren nuestro disco duro: testng-5.8-jdk15.jar
Creamos en src y en test dos paquetes simétricos: "es.cea"
Creamos una nueva clase llamada "ExamenTest" y lo probamos haciendo un println, no debería saltar ninguna excepción a la hora de arrancarlo (Botón derecho encima de la clase>Run as>TestNG test)

Creamos una clase Examen que tenga 2 campos (1 de ellos lo inicializa el constructor) que sean "referencia" y "numeroPreguntas".
El esquema básico de una prueba es:

Un escenario de prueba
Examen examen1=new Examen("ref1");
Examen examen2=new Examen("ref2");
Examen examen1Bis=new Examen("ref1");

Una invocación
boolean equals1 = examen1.equals(examen2);

Una confirmación
assert(!equals1):" el examen 1 debe ser diferente del 2";

boolean equals2 = examen1.equals(examen1Bis);
assert(equals2):" el examen 1bis debe ser igual a examen 1";

Si ponemos el código así y hacemos el test, fallará, así que implementamos el equals y el hashcode en Examen y ya funcionará el test.

Una vez probado el test lo expandimos haciendo una clase "Pregunta" que como parámetros tendra un Examen y un número de preguntas.
Al hacer una nueva clase, también hacemos su correspondiente clase de test: PreguntaTest, que haga lo mismo, creamos unos cuantos objetos de tipo Pregunta y comparamos si son iguales, etc.

Y como ejercicio debemos hacer un ejercicio para probar los test creando una clase "Aula" y otra clase "Localización"
Aula: Atributos: Localización y Nombre
Localización: Atributos: String referencia y Integer planta.

Y para terminar unos consejos para el Eclipse y nuestros proyectos:

Atajos de teclado del Eclipse:
Control+Alt: Copia la linea entera en la que nos encontremos usando los cursores arriba o abajo.
Control+D: Borra la línea en la que nos encontremos.
Alt: Usando también los cursores movemos la línea arriba o abajo.
Control+7: Comenta la línea que nos encontremos.

A partir de hoy en los proyectos que hagamos debemos tener una estructura determinada:
Con respecto a las librerías:
Incluir siempre estas tres librerías:
log4j.jar
commons-logging.jar
testng.jar

Con respecto al código:
Siempre poner la variable logger:
protected final Log logger = LogFactory.getLog(getClass());

Con respecto a los source folders:
Tener siempre el source folder src, resources y test.

No hay comentarios:

Publicar un comentario