Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

erro: javax.naming.NoInitialContextException

Pessoal, um problema que eu to tendo, fora do curso.. Veja se podem me ajudar. Ao rodar uma classe junit para validar métodos do meu DAO, aparece um erro "javax.naming.NoInitialContextException:" ao fechar o statment e o resultset no Finally. Crio a conexão por fora do Container, porém o fechamento pega uma instancia da conexão dentro o método do DAO. Como resolvo essa questão? Segue abaixo um teste de um método:

... @Test public void pesquisarPorIdComConexao() throws SQLException { TabCNAEAlvaraAutomaticoDAO DAO = new TabCNAEAlvaraAutomaticoDAO(); TabCNAEAlvaAutomaticoDto dto = new TabCNAEAlvaAutomaticoDto(); Connection connection = null; try { connection = abrir(); connection.setAutoCommit(false); dto = DAO.pesquisarPorId(Long.valueOf("12"), connection); assertEquals("Método - pesquisarPorId com Conexão - Com sucesso!",dto != null,dto);

    } catch (Exception ex) {
        ex.printStackTrace();
        fail("Falha no método pesquisarPorId com Conexão ");

    } finally {
        connection.close();
        System.out.println("finalizei");
    }
}

...

2 respostas

Fala Tadeu,

Como você fez para criar essa conexão por fora do teste como você mencionou? Geralmente os testes não devem depender do fato de a JNDI estar presente em um ambiente de teste. Mas se for o caso, tenta criar a partir de um arquivo de configuração separado dentro do contexto de testes.

solução!

A classe JUnit que fiz, mesmo passando a conexão, dava erro ao finalizar no Finally (pq pegava uma instancia do container). Descobri que preciso "dizer" ao jUnit que ele precisa pegar a conexão do servidor de aplicação (no meu caso Jboss), usando essa notação @Resource(mappedName = "java:jboss/datasources/PscsLivroContabilDS", type = DataSource.class) em cima da declaração do datasource e depois no @before. Inicio a conexão, no @after finalizo e dou rollback. Funcionou. Muito obrigado pela atenção, Otávio!