Pessoal,
Estou desenvolvendo uns teste utilizando JUnit e EasyMock, mas tem um determinado método que está dando erro. Aqui está o código de teste:
String sql;
Date data;
JDBCConnectionManager connectionManager;
final Connection conn;
PreparedStatement statement;
ResultSet rs;
FeriadosDAO feriadosDAO;
Collection<Feriado> feriados;
try{
sql = JDBCProperties.SELECT_FERIADOS.getProperty();
data = new Date();
connectionManager = createMock(JDBCConnectionManager.class);
conn = createMock(Connection.class);
statement = createMock(PreparedStatement.class);
rs = createMock(ResultSet.class);
expect(connectionManager.getRiscoConnection()).andReturn(conn);
expect(conn.prepareStatement(sql)).andReturn(statement);
expect(statement.executeQuery()).andReturn(rs);
expect(rs.next()).andReturn(false);
feriadosDAO = new FeriadosDAOJDBC(connectionManager);
feriados = feriadosDAO.getFeriados(data, data);
assertTrue(feriados.isEmpty());
}
catch(DAOException exception){
fail("DAOException lançada!");
}
catch(SQLException exception){
fail("SQLException lançada!");
}
E este é o código que está sendo testado:
Collection<Feriado> feriados;
String sql;
Connection conn;
PreparedStatement statement;
ResultSet rs;
feriados = new ArrayList<Feriado>();
sql = JDBCProperties.SELECT_FERIADOS.getProperty();
try{
conn = connectionManager.getRiscoConnection();
statement = conn.prepareStatement(sql);
statement.setDate(1, new java.sql.Date(dataInicial.getTime()));
statement.setDate(2, new java.sql.Date(dataFinal.getTime()));
rs = statement.executeQuery();
while(rs.next()){
feriados.add(new Feriado(rs.getDate("DATAFER")));
}
rs.close();
statement.close();
return feriados;
}
catch(SQLException exception){
throw new DAOException(exception);
}
Quando executo o teste, ele falha dizendo que o objeto conn é nulo, e eu não estou entendendo, porque ele está sendo fornecido pelo mock do JDBCConnectionManager. O que estou fazendo de errado?
