Pregunta

Estoy escribiendo un par de clases que generan archivos xml.(Los detalles probablemente no sean importantes en este momento).

Me pregunto cuál es la mejor estrategia de prueba.

  • No quiero volver a escribir el código de generación xml solo para comparar la salida, cuando podría escribir el archivo en el disco y compararlo en ciertos hitos (la especificación xml no cambiará con frecuencia, como una o dos veces cada par de años)
  • Estoy más interesado en probar el comportamiento de la arquitectura en lugar de los captadores y definidores.

Opciones que me vienen a la mente:

  • reconstruir el archivo xml en el entorno de prueba y comparar las representaciones de cadenas
  • comprobar manualmente el resultado (escribir en un archivo, etc.)
  • reconstruir el archivo xml en la memoria en el entorno de prueba y comparar los elementos en la memoria.

Bonificación virtual si conoce alguna biblioteca para C++ y/o Google Test.

¿Ideas?

¿Fue útil?

Solución

Ha considerado el uso de XSD y validar el XML para el XSD? Usted no ha mencionado si era contenido o estructura que estaba probando (probablemente ambos).
Si se valida, se pondrá a prueba la estructura del XML se ajustarán a la estructura requerida.

Otros consejos

En el pasado me he acercado a esto de dos maneras:

Compare el archivo xml con el resultado almacenado como una cadena en el archivo de prueba.Esto es fácil de implementar y, a menos que desee generar variaciones del archivo xml con fines de prueba, el método de comparación de cadenas funciona bien.

En el caso de que tenga un escritor y lector de archivos xml, puede comparar el original con el resultado de ida y vuelta.

Estoy de acuerdo con usted en que no debe replicar la lógica para generar el archivo en la función de prueba, solo con el fin de realizar pruebas.Además, intentaría evitar la necesidad de escribir en el sistema de archivos; esto es una dependencia innecesaria del sistema de archivos y probablemente daría como resultado una ejecución de pruebas más lenta.

Se podría considerar el uso de XML Unidad: http://xmlunit.sourceforge.net . Proporciona clases de extensión de JUnit que pueden ser utilizados para la igualdad afirman de archivos XML.

Se podría considerar una herramienta de diferencias XML. Hay una libre disponible en MSDN: XML Dif y la herramienta Parche .

Veo que busca herramientas C ++. En ese caso, libxmldiff podría ser más adecuado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top