Erro ao testar a classe Usuario
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
Posts
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?
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
26/04/2011
Davi Costa
Caso tenha resolvido favor fechar pendência.
Att Davi
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."); } }
Clique aqui para fazer login e interagir na Comunidade :)