Buone pratiche per il collaudo di unità con apparecchi di grandi dimensioni o complessi?

7

Sto cercando di utilizzare JUnit per testare una classe ( FooWriter ) responsabile della scrittura dei dati della mia applicazione su disco utilizzando un formato di file personalizzato. Il set di dati che sto scrivendo è potenzialmente molto grande, e voglio almeno essere in grado di testare cose semplici, come se il numero previsto di righe fosse scritto o meno.

Il mio problema è che non sono sicuro di quale sia il modo migliore per impostare il test con dati di test realistici. Sembra che le mie opzioni siano:

  1. Leggi i dati del test dal disco e quindi utilizza tali dati per il% test di prova FooWriter
  2. Scrivi un dispositivo di testo codificato per il caso di test FooWriter da utilizzare

(1) sembra una cattiva idea, perché il caso di test FooWriter non sarebbe più isolato da altre operazioni complesse e fragili. (2) sembra una cattiva idea perché risulterebbe in circa mille righe di codice per comporre la struttura dati, sulla falsariga di:

foo.addBar(new Bar("bof", "bam"));
foo.addBar(new Bar("baz", "boom"));

Non solo è noioso e soggetto a errori, se dovessi apportare una modifica nel modo in cui i dati sono costruiti, il test potrebbe quindi fallire indipendentemente dal fatto che l'applicazione stessa sia effettivamente interrotta.

In casi come questo in cui non vedo buone opzioni, ho scoperto che di solito è perché sono stupido. Dov'è lo stupido?

    
posta Cody Brimhall 14.07.2011 - 23:48
fonte

1 risposta

5

(1) seems like a bad idea because then the FooWriter test case would no longer be isolated from other complex, breakable operations.

Questo è in gran parte irrilevante. La lettura di molti dati di test dovrebbe essere banale. Formato CSV. Formato JSON. Formato YAML. Esistono molti e molti modi per gestirli che non sono né complessi né irrisolvibili.

(2) seems like a bad idea because it would result in about a thousand lines of code to compose the data structure...

Quello che ho fatto in passato è scrivere una piccola utility per convertire una grande quantità di dati di test (sia casuali che in formato CSV) nel codice di TestCase.

In breve, entrambi funzionano e sono entrambe buone scelte.

Lancia una moneta per scegliere. Teste.

    
risposta data 15.07.2011 - 00:07
fonte

Leggi altre domande sui tag