Erro ao testar a classe Usuario

23/04/2011

0

Colegas tenho os seguintes códigos:



Codigo da classe GenericDAO (classe de Conexão)  public ResultSet ExecuteQuery(String query,Object...params) throws SQLException{                 PreparedStatement ps = getStatement(query);         for (int i = 0; i < params.length; i++) {             ps.setObject(i+1, params[i]);         }         return ps.executeQuery();            }
Codigo da classe UsuaarioDAO public int adicionarUsuario(Usuario usr) throws SQLException{                       String sql = "insert into usuario(nome,login,senha) values(?,?,?)";                   ExecuteQuery(sql, usr.getNome(),usr.getLogin(),usr.getSenha());             return usr.getId();     }
// Código da classe que do JUnit, para fazer teste public int adicionarUsuario(Usuario usr) throws SQLException{                       String sql = "insert into usuario(nome,login,senha) values(?,?,?)";                   ExecuteQuery(sql, usr.getNome(),usr.getLogin(),usr.getSenha());             return usr.getId();     }



Ao teste essa classe recebo a seguinte mensagem:
------------- Standard Error -----------------
23/04/2011 13:36:18 treinamento.DAO.UsuarioDAO adicionarUsuario
GRAVE: null
org.firebirdsql.jdbc.FBSQLException: No resultset for sql
    at org.firebirdsql.jdbc.AbstractPreparedStatement.executeQuery(AbstractPreparedStatement.java:166)
    at treinamento.DAO.GenericaDAO.ExecuteQuery(GenericaDAO.java:54)
    at treinamento.DAO.UsuarioDAO.adicionarUsuario(UsuarioDAO.java:50)
    at treinamento.DAO.UsuarioDAOTest.testAdicionarUsuario(UsuarioDAOTest.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)


Alguem poderia me dar uma ajuda por favor?


Nilo Souza

Nilo Souza

Responder

Posts

23/04/2011

Nilo Souza

Colegas tenho os seguintes códigos:



Codigo da classe GenericDAO (classe de Conexão)  public ResultSet ExecuteQuery(String query,Object...params) throws SQLException{                 PreparedStatement ps = getStatement(query);         for (int i = 0; i < params.length; i++) {             ps.setObject(i+1, params[i]);         }         return ps.executeQuery();            }
Codigo da classe UsuaarioDAO public int adicionarUsuario(Usuario usr) throws SQLException{                       String sql = "insert into usuario(nome,login,senha) values(?,?,?)";                   ExecuteQuery(sql, usr.getNome(),usr.getLogin(),usr.getSenha());             return usr.getId();     }
// Código da classe que do JUnit, para fazer teste @Test     public void testAdicionarUsuario() throws SQLException {         System.out.println("adicionarUsuario");         Usuario usr = new Usuario();         usr.setNome("Nilo");         usr.setLogin("nsouza");         usr.setSenha("123");         UsuarioDAO instance = new UsuarioDAO();         idOfUser = instance.adicionarUsuario(usr);         Usuario result = instance.getUser(idOfUser);         assertEquals(idOfUser, result.getId());         }



Ao teste essa classe recebo a seguinte mensagem:
------------- Standard Error -----------------
23/04/2011 13:36:18 treinamento.DAO.UsuarioDAO adicionarUsuario
GRAVE: null
org.firebirdsql.jdbc.FBSQLException: No resultset for sql
    at org.firebirdsql.jdbc.AbstractPreparedStatement.executeQuery(AbstractPreparedStatement.java:166)
    at treinamento.DAO.GenericaDAO.ExecuteQuery(GenericaDAO.java:54)
    at treinamento.DAO.UsuarioDAO.adicionarUsuario(UsuarioDAO.java:50)
    at treinamento.DAO.UsuarioDAOTest.testAdicionarUsuario(UsuarioDAOTest.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)


Alguem poderia me dar uma ajuda por favor?


Responder

23/04/2011

Davi Costa

Vc está adicionando um item e não realizando uma consulta, por isso não retorna ResultSet. Se vc troca seu insert por um select perceberá que não dará mais esse erro.

Em nenhum momento nesse trecho de código:

public int adicionarUsuario(Usuario usr) throws SQLException{          
            String sql = "insert into usuario(nome,login,senha) values(?,?,?)";      
            ExecuteQuery(sql, usr.getNome(),usr.getLogin(),usr.getSenha());
            return usr.getId();
    }

@Test
    public void testAdicionarUsuario() throws SQLException {
        System.out.println("adicionarUsuario");
        Usuario usr = new Usuario();
        usr.setNome("Nilo");
        usr.setLogin("nsouza");
        usr.setSenha("123");
        UsuarioDAO instance = new UsuarioDAO();
        idOfUser = instance.adicionarUsuario(usr);
        Usuario result = instance.getUser(idOfUser);
        assertEquals(idOfUser, result.getId());
   
    }

Vc adicionou um id para o Usuario usr, não é JPA que através do mapeamento vai pegar o id do seu banco.
Mas p PreparedStatement tem um método que talvez possa te ajudar.

ps.executeUpdate(sql, autoGeneratedKeys);

Espero ter ajudado, só para finalizar para vc dar um insert use somente execute(), ele retorna um boolean, que talvez vc possa usar no seu teste é bom ver a documentação para ver em que situação ele te retorna true ou false.

Att Davi
Responder

26/04/2011

Davi Costa

E ai deu certo? Algum feedBack?

Caso tenha resolvido favor fechar pendência.

Att Davi
Responder

26/04/2011

Dyego Carmo

Resolvido ?

Se sim , por favor feche o chamado :)
Responder

26/04/2011

Nilo Souza

Não resolvi, assim que voltar respondo.
volto amanha.
Responder

27/04/2011

Nilo Souza

Ola, já estou em casa. Na verdade não resolveu. Abaixo toda a minha classe de teste para ajudar na compreensão do que fiz. Obrigado desde já pela ajuda!

 

package treinamento.DAO;

import com.sun.xml.internal.ws.wsdl.writer.UsingAddressing;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import treinamento.entidade.Usuario;

/**
 *
 * @author nsouza
 */
public class UsuarioDAOTest {
    
     public static Integer idOfUser = 0;
    
    public UsuarioDAOTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }
    
    @Before
    public void setUp() {
    }
    
    @After
    public void tearDown() {
    }
    
    @Test
    public void testGetUser() throws Exception {
        System.out.println("getUser");
        int IdUser = idOfUser;
        UsuarioDAO instance = new UsuarioDAO();
        Integer expResult = idOfUser;
        Usuario result = instance.getUser(IdUser);
        assertEquals(expResult, result.getId());       
    }
    
    @Test
    public void testAdicionarUsuario() throws SQLException {
        System.out.println("adicionarUsuario");
        Usuario usr = new Usuario();
        usr.setNome("Nilo");
        usr.setLogin("nsouza");
        usr.setSenha("123");
        UsuarioDAO instance = new UsuarioDAO();
        idOfUser = instance.adicionarUsuario(usr);
        Usuario result = instance.getUser(idOfUser);
        assertEquals(idOfUser, result.getId());
    
    }
    
    //@Test
    public void testValidarUsuarioSenha() {
        System.out.println("validarUsuarioSenha");
        String usuario = "";
        String senha = "";
        UsuarioDAO instance = new UsuarioDAO();
        boolean expResult = false;
        boolean result = instance.validarUsuarioSenha(usuario, senha);
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }
    
    
    //@Test
    public void testRemoveUsuario() {
        System.out.println("removeUsuario");
        int idUser = 0;
        UsuarioDAO instance = new UsuarioDAO();
        instance.removeUsuario(idUser);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }
 
   

    /*
     * @Test
    public void testGetUser() throws Exception {
        System.out.println("getUser");
        int idUser = idOfUser;
        UserDAO instance = new UserDAO();
        Integer expResult = idOfUser;
        User result = instance.getUser(idUser);
        assertEquals(expResult, result.getId());
    } 
     */
   // @Test
    public void testAtualizaUsuario() {
        System.out.println("atualizaUsuario");
        Usuario User = null;
        UsuarioDAO instance = new UsuarioDAO();
        instance.atualizaUsuario(User);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    

    /**
     * Test of getAllUsers method, of class UsuarioDAO.
     */
   // @Test
    public void testGetAllUsers() throws Exception {
        System.out.println("getAllUsers");
        UsuarioDAO instance = new UsuarioDAO();
        List expResult = null;
        List result = instance.getAllUsers();
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    /**
     * Test of populateUserInfo method, of class UsuarioDAO.
     */
   // @Test
    public void testPopulateUserInfo() throws Exception {
        System.out.println("populateUserInfo");
        ResultSet rs = null;
        Usuario expResult = null;
        Usuario result = UsuarioDAO.populateUserInfo(rs);
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }
}


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar