Domanda

Sto scrivendo un paio di classi che generano file xml.(I dettagli probabilmente non sono importanti al momento).

Mi chiedo quale sia la migliore strategia di test.

  • Non voglio riscrivere il codice di generazione xml solo per confrontare l'output, quando potrei scrivere il file su disco e confrontarlo a determinati traguardi (le specifiche xml non cambieranno spesso, come una o due volte ogni paio di anni)
  • Sono più interessato a testare il comportamento dell'architettura anziché i getter e i setter

Opzioni che mi vengono in mente:

  • ricostruendo il file xml nell'ambiente di test e confrontando le rappresentazioni delle stringhe
  • controllo manuale del risultato (scrittura su file, ecc.)
  • ricostruendo il file xml in memoria nell'ambiente di test e confrontando gli elementi in memoria.

Bonus virtuale se conosci librerie per C++ e/o Google Test.

Idee?

È stato utile?

Soluzione

Hai pensato di usare XSD e di convalida XML alla XSD? Lei non ha menzionato se fosse contenuto o la struttura si stava testando per la (probabilmente entrambi).
Se convalida, che metterà alla prova la struttura del file XML sarà conforme alla struttura richiesta.

Altri suggerimenti

In passato mi sono avvicinato a questo in due modi:

Confronta il file xml con il risultato memorizzato come stringa nel file di test.Questo è facile da implementare e, a meno che non si desideri generare variazioni del file xml a scopo di test, il metodo di confronto delle stringhe funziona correttamente.

Nel caso in cui si disponga di un programma di scrittura e lettura di file xml, è possibile confrontare l'originale con il risultato di andata e ritorno.

Sono d'accordo con te sul fatto che non dovresti replicare la logica per generare il file nella funzione di test, solo a scopo di test.Inoltre, proverei a evitare la necessità di scrivere sul file system: questa è una dipendenza non necessaria dal file system e probabilmente comporterebbe un'esecuzione più lenta dei test.

Si potrebbe considerare l'utilizzo di unità XML: http://xmlunit.sourceforge.net . Fornisce classi di estensione JUnit che possono essere utilizzati per affermare parità di file XML.

Si potrebbe considerare uno strumento di diff XML. C'è un libero disponibile su MSDN: XML Diff e strumento Toppa .

Vedo che siete alla ricerca di strumenti di C ++. In tal caso, libxmldiff potrebbe essere più adatto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top