Como testar métodos DAO usando o Mockito?
Comecei a descobrir a biblioteca Mockito e há uma pergunta para a qual não encontrei a resposta adequada.
Se eu tiver, por exemplo, esse método na minha classe UserDAO que salva o usuário no banco de dados:
public class UserDAO{
...
public void create(User user) {
Connection connection = null;
PreparedStatement pstmt = null;
ResultSet generatedKeys = null;
try {
connection = getConnection();
pstmt = connection.prepareStatement(INSERT_USER,
PreparedStatement.RETURN_GENERATED_KEYS);
int counter = 1;
pstmt.setString(counter++, user.getFirstName());
pstmt.setString(counter++, user.getLastName());
pstmt.setString(counter++, user.getEmail());
pstmt.setString(counter++, user.getPassword());
pstmt.setString(counter++, user.getRole());
pstmt.setString(counter, user.getLang());
pstmt.execute();
connection.commit();
generatedKeys = pstmt.getGeneratedKeys();
if (generatedKeys.next()) {
user.setId(generatedKeys.getInt(Fields.GENERATED_KEY));
}
} catch (SQLException e) {
rollback(connection);
LOG.error("Can not create a user", e);
} finally {
close(connection);
close(pstmt);
close(generatedKeys);
}
}
....
}
Como devo testá-lo?
Se eu quiser testar, por exemplo, uma classe DAO, preciso criar umDataSource
zombar,Connection
zombar,ResultSet
mock etc? E para não testar o próprio banco de dados?
Mas e se eu quiser testar também o comportamento do dao e do banco de dados?
Você poderia produzir alguns exemplos de código, links que poderiam ser úteis e mostrar as melhores abordagens para fazer isso?