3
respostas

Erro 500 no post

Criei o seguinte teste para validar o cadastro porém ao invés de retornar 201 com o recurso criado está gerando esse erro genérico. Minha DAO está funcionando isoladamente de forma normal (Criei um endereço de listagem usando a mesma) Teriam alguma pista do que poderia ser?

    @Test
    public void testAdicionaEspecie() {

        Especie especie = new Especie();
        especie.setDescricao("Especie Test");
        Entity<Especie> entity = Entity.entity(especie, MediaType.APPLICATION_JSON);
        System.out.println(entity);
        Response response = targetVetweb.path("prontuario/especies")
                .request()
                .post(entity);
        String locNovaEspecie = response.getHeaderString("Location");
        System.out.println(response.getStatus());
        assertTrue(response.getStatus() == 201);
        assertTrue(!locNovaEspecie.isEmpty());

    }
    @Path("especies")
    @POST
    @Consumes(value = MediaType.APPLICATION_JSON)
    public Response postEspecie(Especie especie) {
        especieService.add(especie);
        return Response.created(URI.create(uriResource.toString() + "/especies/" + especie.getEspecieId())).build();
    }
    @Override
    public void add(Especie especie) {
        animalDAO.salvarEspecie(especie);
    }
3 respostas

Estou usando WildFly 10. Descobri na depuração que está falhando com TransactionRequiredException nas classes de teste. Inseri o datasource na configuração do WildFly e o meu arquivo de configuração do ORM contém:

<jta-data-source>java:jboss/datasources/vetwebds</jta-data-source>

Ou seja imagino estar usando jta para gerenciar transações, como faço para que o junit reconheça essa configuração e teste o meu cadastro? Já tentei usar a anotação Transactional no teste mas sem sucesso

Minha sugestão é colocar a annotation @Stateless em cima da sua classe do jax-rs e aí usar o transactional de novo. Não sei o quão integrado o jax-rs é com o cdi e aí, se não for, sua annotation Transactional está sendo ignorada.

Olá Alberto, acabou funcionando ao anotar o método na DAO com @Transactional Mas tenho mais uma dúvida, criei uma classe de serviço que é invocada pelo Resource e prove a funcionalidade e regra de negócio, gostaria de realizar os testes unitários nessas classes de serviço porém ao injetar os mesmos no JUnit os objetos chegam nulos. Existe alguma maneira de fazer isso?