Deserializzare oggetti complessi invece di crearli una buona idea, nella configurazione di prova?

3

Sto scrivendo i test per un componente che accetta oggetti molto complessi come input. Questi test sono mix di test con componenti già esistenti e test-primi test per nuove funzionalità.

Invece di ricreare i miei oggetti di input (questo sarebbe un grosso pezzo di codice) o di leggerne uno dal nostro archivio dati, ho avuto il pensiero di serializzare un'istanza dal vivo di uno di questi oggetti, e semplicemente di deserializzare in test l'installazione.

Non riesco a decidere se questa è un'idea ragionevole che salverà gli sforzi a lungo termine, o se è la peggiore idea che abbia mai avuto, facendo sì che quelli che manterranno questo codice mi daranno la caccia non appena leggilo.

La deserializzazione degli input è un mezzo valido per l'impostazione del test in alcuni casi?

Per dare un senso di scala a ciò che sto trattando, la dimensione dell'output di serializzazione per uno di questi oggetti di input è 93 KB. Ottenuto da, in C #:

new BinaryFormatter().Serialize((Stream)fileStream, myObject);

    
posta Chris Bye 07.09.2012 - 22:34
fonte

2 risposte

1

Il problema più grande che dovrai affrontare con questo schema è quello del controllo delle versioni: se uno qualsiasi dei tipi nel tuo grafico serializzato cambia (proprietà aggiunta / rimossa / rinominata per esempio), la serializzazione rischia di fallire così come tutti i test che fanno affidamento sul grafico dell'oggetto che è stato serializzato.

Solo per questo motivo eviterei la serializzazione. Utilizza invece un metodo di builder.

    
risposta data 07.09.2012 - 22:37
fonte
0

La creazione di oggetti verifica manualmente il codice coinvolto nella creazione dell'oggetto. Tradizionalmente, quest'area del codice è esercitata in modo molto scarso nei test, soprattutto se confrontata con il codice della logica aziendale. Il percorso di serializzazione è sicuramente possibile, ma è necessario tenere presente che potrebbe essere necessario aggiungere altri test per verificare il codice di creazione dell'oggetto tramite l'API normale di non serializzazione.

Se decidi di utilizzare le istanze serializzate, prova a rendere leggibile il formato (XML? JSON?), magari a costo di produrre un file più grande. Questo ti permetterà di gestire piccole modifiche della versione insignificanti meglio che con gli oggetti serializzati in modo binario.

    
risposta data 07.09.2012 - 23:18
fonte

Leggi altre domande sui tag