Estoy empezando con Junit y tengo un problema al realizar pruebas unitarias con JUnit contra una clase que contiene el acceso a la BBDD, la aplicación no utiliza Spring, ni hibernate, con el código que anexo me sale nullpointerexception contra la conexion que no consigo hacerla y estoy atascada. No se si debo utilizar mock, y en caso que sea así que libreria
public class ServicioDAO implements ServicioDAOInterface {
//poner a private private DataSource fuenteDatos = null;
String errorInicial = null; /* SQLs del DAO de la tabla de servicios */
/* SQL para recuperar un servicio determinado, tanto el código como la descripción */ private static String sqlRecuperarUnServicio = "select * from ta_servicios where serv_cod = ?";
public String getErrorInicial () { return this.errorInicial; }
Estoy empezando con Junit y tengo un problema al realizar pruebas unitarias con JUnit contra una clase que contiene el acceso a la BBDD, la aplicación no utiliza Spring, ni hibernate, con el código que anexo me sale nullpointerexception contra la conexion que no consigo hacerla y estoy atascada.
No se si debo utilizar mock, y en caso que sea así que libreria
---------------------------------------
package prueba.serviciosTest;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import prueba.ServicioDAO;
public class ServicioDAOTest {
static ServicioDAO servicioDao= null;
@Before
public void setUp() throws Exception {
servicioDao = new ServicioDAO();
}
@Test
public final void testGetRecuperarUnServicio() {
assertNotNull(servicioDao.getRecuperarUnServicio("MAN"));
}
}
----------------------------------------------------------------------------------------------
package prueba.servicios;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameNotFoundException;
import javax.sql.DataSource;
public class ServicioDAO implements ServicioDAOInterface {
//poner a private
private DataSource fuenteDatos = null;
String errorInicial = null;
/* SQLs del DAO de la tabla de servicios */
/* SQL para recuperar un servicio determinado, tanto el código como la descripción */
private static String sqlRecuperarUnServicio = "select * from ta_servicios where serv_cod = ?";
public String getErrorInicial () {
return this.errorInicial;
}
/*
* Constructor
*/
public ServicioDAO () throws SQLException {
try {
Context contextoInicial = new InitialContext();
Context contexto = (Context) contextoInicial.lookup("java:comp/env");
fuenteDatos = (DataSource) contexto.lookup("jdbc/pruebaDS");
} catch (NameNotFoundException e) { // Hija de NamingException
errorInicial = new String(e.toString());
} catch (Exception e) {
errorInicial = new String(e.toString());
}
}
/*
* Recupera un Servicio se le pasa el codigo del servicio que se desea obtener
*/
public Servicio getRecuperarUnServicio(String servCodParam) {
//Inicializamos
String servCod = "" ;
String servDesc = "";
// Objeto en el que se guardará el servicio que se recupere
Servicio servicioRecuperado = new Servicio();
try {
Connection conexion = fuenteDatos.getConnection();
try {
PreparedStatement statement = conexion.prepareStatement(sqlRecuperarUnServicio);
statement.setString(1, servCodParam);
try {
ResultSet resultSet = statement.executeQuery();
while (resultSet.next()) {
servCod = resultSet.getString("serv_cod");
servDesc = resultSet.getString("serv_desc");
}
// lo saco fuera para cargar 0 sino retorna nada
servicioRecuperado.setServCod(servCod);
servicioRecuperado.setServDesc(servDesc);
/* Devolvemos servicio recuperado */
return servicioRecuperado;
} finally {
statement.close();
}
} finally {
conexion.close();
}
} catch (SQLException ex) {
System.out.println("Excepcion en recuperar 1 Servicio (getRecuperarUnServicio/ServicioDAO): "
+ ex.getSQLState());
return null;
}
}