1
resposta

Xml não esta sendo gerado corretamente

Podem me dar uma força por favor ? Meu Test

@Test
    public void deveSerializarLivroEMusica() {
        String resultadoEsperado = "<compra>\n" 
                + "  <id>15</id>\n"
                + "  <produtos>\n" 
                + "    <livro codigo=\"1589\">\n"
                + "      <nome>O Pássaro Raro</nome>\n"
                + "      <preco>100.0</preco>\n"
                + "      <descrição>dez histórias sobre a existência</descrição>\n"
                + "    </livro>\n" 
                + "    <musica codigo=\"1590\">\n"
                + "      <nome>Meu Passeio</nome>\n"
                + "      <preco>100.0</preco>\n"
                + "      <descrição>música livre</descrição>\n"
                + "    </musica>\n"
                + "  </produtos>\n" 
                + "</compra>";

        Compra compra = compraComLivroEMusica();

        XStream xstream = xstreamParaCompraEProduto();

        String xmlGerado = xstream.toXML(compra);

        assertEquals(resultadoEsperado, xmlGerado);
    }

//Meu compraComLivroEMusica()

private Compra compraComLivroEMusica() {
        Produto livro = new Livro("O Pássaro Raro", 100.0, "dez histórias sobre a existência", 1589);
        Produto musica = new Musica("Meu Passeio", 100.0, "música livre", 1590);
        List<Produto> produtos = new ArrayList<Produto>();
        produtos.add(livro);
        produtos.add(musica);

        return new Compra(15, produtos);
    }

//Meu xstreamParaCompraEProduto()

private XStream xstreamParaCompraEProduto() {
        XStream xstream = new XStream();
        xstream.alias("compra", Compra.class);
        xstream.alias("produto", Produto.class);
        xstream.alias("livro", Livro.class);
        xstream.alias("musica", Musica.class);
        xstream.aliasField("descrição", Produto.class, "descricao");
        xstream.useAttributeFor(Produto.class, "codigo");
        return xstream;
    }

//xmlGerado

<compra>
  <id>15</id>
  <produtos>
    <livro/>
    <musica/>
  </produtos>
</compra>
1 resposta

Em vez de

List<Produto> produtos = new ArrayList<Produto>();

tenta com

List<Produto> produtos = new LinkedList<>();

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software