Ir al contenido principal

Usar JNDI en tests de jUnit

Para poder cargar el contexto y poder acceder a lo que configuremos con JNDI en jUnit definiremos el método setUp de la siguiente forma:
try {
    // Create initial context
    System.setProperty(Context.INITIAL_CONTEXT_FACTORY,
        "org.apache.naming.java.javaURLContextFactory");
    System.setProperty(Context.URL_PKG_PREFIXES, 
        "org.apache.naming");            
    InitialContext ic = new InitialContext();

    ic.createSubcontext("java:");
    ic.createSubcontext("java:/comp");
    ic.createSubcontext("java:/comp/env");
    ic.createSubcontext("java:/comp/env/jdbc");
   
    // Construct DataSource
    OracleConnectionPoolDataSource ds = new OracleConnectionPoolDataSource();
    ds.setURL("jdbc:oracle:thin:@host:port:db");
    ds.setUser("MY_USER_NAME");
    ds.setPassword("MY_USER_PASSWORD");
    
    ic.bind("java:/comp/env/jdbc/nameofmyjdbcresource", ds);
} catch (NamingException ex) {
    Logger.getLogger(MyDAOTest.class.getName()).log(Level.SEVERE, null, ex);
}
En la zona donde definimos el DataSource podremos incluir cualquier conexión a base de datos que necesitemos simplemente cambiando las clases. En el mi caso que es para Postgres la cosa quedaría así:
PGPoolingDataSource ds = new PGPoolingDataSource();
ds.setServerName("SERVER");
ds.setDatabaseName("DB_NAME");
La fuente de todo esto la extraje de: http://blogs.oracle.com/randystuph/entry/injecting_jndi_datasources_for_junit

Comentarios

Entradas populares de este blog

Formatear fecha JSON

Para poder representar de forma bonita y humana una fecha retornada por un JSON por ejemplo, la función quedaría tal que así. En mi caso, el formato esperado es: dd/MM/yyyy hh:mm

function FormatDate(fecha) { var fechaObj = new Date(fecha); return (fechaObj.getDate() < 10 ? '0' : '') + fechaObj.getDate() + '/' + (fechaObj.getMonth() < 10 ? '0' : '') + fechaObj.getMonth() + '/' + fechaObj.getYear() + ' ' + (fechaObj.getHours() < 10 ? '0' : '') + fechaObj.getHours() + ':' + (fechaObj.getMinutes() < 10 ? '0' : '') + fechaObj.getMinutes(); };

Generar números aleatorios con Postgres

Muchas veces nos encontraremos con que tenemos que poblar una BD con numeros para poder testear un funcionalidad que estemos programando. En postgres es tan sencillo como:

update schema.tabla set columnaNumerica = floor(random() * N) + desviacion;
Con desviación me refiero a que, si no lo añadimos, random generara numeros empezando por el 0 hasta N. El uso de floor es para redondear y quedarme solo con la parte entera. Ya que random genera floats entre 0 y 1.

Espero os sirva este pequeño truquillo. Un saludico.