Testar um Método que utiliza o Banco de Dados - JUnit again

Olá,
eu e minha luta com o JUnit, desde o último tópico que eu pergunto se tudo deve ser testado utilizando o JUnit, aqui vai uma pergunta que realmente não sei solucionar. O que eu desejo é criar um TestCase para minha classe UsuariosDAO e mais precisamente o seguinte método que ainda não foi implementado:

    public boolean verificaLoginESenha(String login,String senha) {
        return false;
    }

O objetivo aqui é passar o login e senha que o usuário digitar e validar no banco de dados. O detalhe é que estou utilizando o Hibernate e minhas tabelas estão representadas no sistema como JavaBeans
Problemas:
:arrow: Li em alguns lugares que não se deve testar diretamente o banco de dados.
:arrow: Dentro desse método vou ter que carregar informações da tabela no banco de dados para o modelo, algo como um HQL fazendo um “select” com um where do login e senha.
:arrow: O SessionFactory do Hibernate é carregado apenas quando o Tomcat entra no ar, e para testar o JUnit eu não vou subir o Tomcat.

Alguem poderia me dar umas dicas de como eu posso montar esse TestCase?

Obrigado

Não sei se é a melhor maneira, mas o que eu faço é:

:arrow: Inicializo um banco de dados específico para testes com informações conhecidas
:arrow: Crio um objeto local com a informação que deve ser retornada do banco
:arrow: Faço a consulta no banco via DAO
:arrow: comparo o resultado da consulta com o objeto local

Detalhe, estou usando DAOs que acessam o BD diretamente, nada de hibernate. Aproveito a deixa para perguntar aos Java Gurus: o que estou fazendo está muito fora do recomendado?[/i]

Não sei como está a sua estrutura e tal, mas dependendo o caso eu utilizaria mock objects para simular o Hibernate por exemplo…

Então vou ter que trabalhar com Mock Objects? o que seria isso basicamente?

De uma olhada em:
http://www.mockobjects.com/FrontPage.html

Eu utilizo esse framework para mock:
http://www.easymock.org/

Fallow

Voce deve usar mock objects pros unit tests, vai ficar bem mais facil.
Pros testes de integração eu sugiro voce subir o hibernate usando algum banco java como Axion, Derby ou HSQL e manda ver nos testes.

[quote=“louds”]Voce deve usar mock objects pros unit tests, vai ficar bem mais facil.
Pros testes de integração eu sugiro voce subir o hibernate usando algum banco java como Axion, Derby ou HSQL e manda ver nos testes.[/quote]

Perfeito, geralmente eu uso os mock objects para verificar se a implementação do Objeto está correta, assim eu evito que erros não relacionados com a minha implementação interfiram na análise…

Mas realmente, a integração deve ser testada com os objetos reais e com a situação mais real possível (pelo menos de acordo com o cenário de teste desejado) para assim garantir uma maior validade do teste…

Seis anos depois…

http://code.google.com/p/hibernatemock/

Ajuda testar a persistência. Facilita o setup do banco de dados…