Fórum Erro ao testar a classe Usuario #399604
23/04/2011
0
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
Curtir tópico
+ 0Posts
23/04/2011
Nilo Souza
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?
Gostei + 0
23/04/2011
Davi Costa
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
Gostei + 0
26/04/2011
Davi Costa
Caso tenha resolvido favor fechar pendência.
Att Davi
Gostei + 0
26/04/2011
Dyego Carmo
Se sim , por favor feche o chamado :)
Gostei + 0
26/04/2011
Nilo Souza
volto amanha.
Gostei + 0
27/04/2011
Nilo Souza
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.");
}
}
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)