Unit prueba una clase DAO que usa Spring JDBC

Tengo varios objetos DAO que se utilizan para recuperar información de una base de datos y yoDe Verda quiero escribir algunas pruebas automatizadas para ellos, pero estoy teniendo dificultades para descubrir cómo hacerlo.

Estoy usando Spring'sJdbcTemplate para ejecutar la consulta real (a través de una declaración preparada) y asignar los resultados al objeto modelo (a través deRowMapper clase)

Si tuviera que escribir pruebas unitarias, no estoy seguro de cómo podría / debería burlarme de los objetos. Por ejemplo, dado que solo hay lecturas, usaría la conexión de base de datos real y no me burlaría de jdbcTemplate, pero no estoy seguro de que sea correcto.

Aquí está el código (simplificado) para el DAO más simple del lote:

/**
 * Implementation of the {@link BusinessSegmentDAO} interface using JDBC.
 */
public class GPLBusinessSegmentDAO implements BusinessSegmentDAO {
    private JdbcTemplate jdbcTemplate;

    private static class BusinessSegmentRowMapper implements RowMapper<BusinessSegment>  {
        public BusinessSegment mapRow(ResultSet rs, int arg1) throws SQLException { 
            try {
                return new BusinessSegment(rs.getString(...));
            } catch (SQLException e) {
                return null;
            }
        }
    }

    private static class GetBusinessSegmentsPreparedStatementCreator 
        implements PreparedStatementCreator {
        private String region, cc, ll;
        private int regionId;

        private GetBusinessSegmentsPreparedStatementCreator(String cc, String ll) {
            this.cc = cc;
            this.ll = ll;
        }

        public PreparedStatement createPreparedStatement(Connection connection)
                throws SQLException {           
            String sql = "SELECT ...";

            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setString(1, cc);
            ps.setString(2, ll);
            return ps;
        }
    }

    public GPLBusinessSegmentDAO(DataSource dataSource) {
        jdbcTemplate = new JdbcTemplate(dataSource);
    }

    public Collection<BusinessSegment> getBusinessSegments(String cc, String ll) {
        return jdbcTemplate.query(
                new GetBusinessSegmentsPreparedStatementCreator(cc, ll), 
                new BusinessSegmentRowMapper());
    }

}

Cualquier idea sera apreciada

¡Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta