Logging para Junit

On 22 junio, 2010, in Consejos, by twiindan

El otro día vi como se estaban peleando los desarrolladores con unos Test Unitarios hechos en Junit que no entiendian porque fallaban y se excusaban en que no tenían ningún log cuando los desarrollaban.

Empece a pensar un poco, y llegue a la conclusión que al fin y al cabo Junit no deja de ser código java puramente y que por lo tanto se podría utilizar igualmente la librería que utilizamos para el desarrollo de la aplicación log4j.

Dentro del frameework de Log4j está el concepto de “Appenders” donde se le indica el destino en el que se escribirán las trazas de log (consola, fichero de texto…). En nuestro caso, estos Appenders se configuran durante la inicialización de la aplicación, por lo que en los tests unitarios se debería inicializar en algo parecido.

Para ello dependiendo de nuestra arquitectura de Test Unitarios de Junit podemos optar por varias opciones:

  • Si queremos inicializar el log para un test o varios en particular hay que realizar la llamada desde los métodos “setUp” y realizar un logging shutdown en el método “tearDown”:

public void setUp() {
BasicConfigurator.configure();
}

public void tearDown() {
LogManager.shutdown();
}

  • Si tenemos los tests en Test Suites lo mejor será que inicialicemos los logs en un método de inicialización @beforeclass:
public class AllTests {
    @BeforeClass
    public static void startup() {
        BasicConfigurator.configure();
    }
}

Yo personalmente prefiero la segunda opción ya que de esta manera podemos ejecutaremos la inicialización de los logs una única vez y siempre antes de la ejecucción de los tests, por lo que no tendremos problemas de encontrarnos código duplicado.

Share and Enjoy:
  • Facebook
  • Twitter
  • Google Buzz
  • LinkedIn
Tagged with:  

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *