Pergunta

Estou escrevendo algumas aulas que geram arquivo XML. (Os detalhes provavelmente não são importantes no momento).

Gostaria de saber a melhor estratégia de teste.

  • Não quero reescrever o código de geração XML apenas para comparar a saída, quando eu poderia escrever o arquivo para disco e compará-lo em certos marcos (a especificação XML não vai mudar com frequência, como uma ou duas vezes a cada dois anos)
  • Estou mais interessado em testar o comportamento da arquitetura em vez dos getters e setters

Opções que vêm à mente:

  • Reconstruindo o arquivo XML no ambiente de teste e comparando as representações de string
  • Verificando manualmente o resultado (escrevendo para arquivar, etc.)
  • Reconstruindo o arquivo XML na memória no ambiente de teste e comparando os elementos da memória.

Bônus virtual se você conhece alguma biblioteca para o teste C ++ e/ou Google.

Ideias?

Foi útil?

Solução

Você já pensou em usar o XSD e validar seu XML para o XSD? Você não mencionou se era conteúdo ou estrutura que você estava testando (provavelmente ambos).
Se validar, testará a estrutura do XML em conformidade com a estrutura necessária.

Outras dicas

No passado, abordei essas duas maneiras:

Compare o arquivo XML com o resultado armazenado como uma string no arquivo de teste. Isso é fácil de implementar e, a menos que você queira gerar variações do arquivo XML para fins de teste, o método de comparação de string funciona bem.

No caso em que você possui um escritor e leitor de arquivos XML, você pode comparar o original com o resultado da viagem de ida e volta.

Concordo com você que você não deve replicar a lógica para gerar o arquivo na função de teste, apenas para fins de teste. Além disso, eu tentaria evitar a necessidade de gravar no sistema de arquivos - isso é uma dependência desnecessária do sistema de arquivos e provavelmente resultaria em testes de execução mais lentos.

Você pode considerar o uso da unidade XML: http://xmlunit.sourceforge.net. Ele fornece classes de extensão JUNIT que podem ser usadas para afirmar a igualdade de arquivos XML.

Você pode considerar uma ferramenta XML DIFF. Há um gratuito disponível no MSDN: XML Diff e ferramenta de patch.

Vejo que você está procurando ferramentas C ++. Nesse caso, libxmldiff pode ser mais adequado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top