1
resposta

Erro na saída do teste em ProjetoTest

O código de minha saída para ProjetoTest.java não está conseguindo efetuar a busca e retornar o xml. Revisei algumas vezes mas não consigo identificar onde está o problema. Vou postar aqui o código da ProjetoTest.java, ProjetoResource e Servidor

ProjetoTest.java

package br.com.alura.loja;

import javax.ws.rs.client.Client; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.client.WebTarget;

import org.glassfish.grizzly.http.server.HttpServer; import org.junit.After; import org.junit.Before; import org.junit.Test;

import com.thoughtworks.xstream.XStream;

import br.com.alura.loja.modelo.Projeto; import junit.framework.Assert;

public class ProjetoTest { private HttpServer server;

@Before
public void startaServidor() {
    server = Servidor.inicializaServidor();
}

@After
public void mataServidor() {
    server.stop();
}

@Test //anotação para rodar com o jUnit
public void testaQueBuscarUmProjetoTrazOProjetoEsperado() {
    Client client = ClientBuilder.newClient();
    WebTarget target = client.target("http://localhost:8083");
    String conteudo = target.path("/projetos").request().get(String.class);
    Projeto projeto = (Projeto) new XStream().fromXML(conteudo);
    Assert.assertEquals("Alura", projeto.getNome());
    System.out.println("Imprimindo o conteúdo da mensagem xml " + conteudo);
}

} package br.com.alura.loja.resource;

import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType;

import br.com.alura.loja.dao.ProjetoDAO; import br.com.alura.loja.modelo.Projeto;

@Path("/projetos") public class ProjetoResource { @GET @Produces(MediaType.APPLICATION_XML) public String busca() { Projeto projeto = new ProjetoDAO().busca(1l); return projeto.toXML();

}

}

package br.com.alura.loja;

import java.io.IOException; import java.net.URI;

import org.glassfish.grizzly.http.server.HttpServer; import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; import org.glassfish.jersey.server.ResourceConfig;

public class Servidor { public static void main(String[] args) throws IOException { HttpServer server = inicializaServidor(); System.in.read(); server.stop(); }

public static HttpServer inicializaServidor() {
    ResourceConfig config = new ResourceConfig().packages("br.com.alura.loja"); //cria a configuração baseada nas classes do pacote
    URI uri = URI.create("http://localhost:8083/");
    HttpServer server = GrizzlyHttpServerFactory.createHttpServer(uri, config);

// System.out.println("Servidor Rodando pelo URI " + uri); return server; } }

1 resposta

Olá André! Tudo bem?

Pelo código que você postou, parece que o problema está na classe ProjetoResource. Mais especificamente, no método busca().

O método busca() da classe ProjetoResource está retornando corretamente o XML do projeto. Pode ser que o método toXML() da classe Projeto não está implementado corretamente e retornando o XML esperado.

A primeira coisa que você pode verificar é se o servidor está sendo iniciado corretamente. O método inicializaServidor() na classe Servidor é responsável por iniciar o servidor Grizzly. Certifique-se de que o servidor esteja em execução antes de executar o teste. Se possível envie o log do servidor aqui também.

O ProjetoResource parece esrar mapeado corretamente.

Sabe informar se o método busca() está retornando corretamente o XML do projeto usando o método toXML()? Colocar um breakpoint nessa linha pode ajudar.

Poderia informar se as dependências (como Jersey, Grizzly, XStream) estão no classpath do projeto?

Vamos tentar descobrir juntos o problema :)