Sto lavorando su un progetto con pochi formati di file. Alcuni formati sono specificati da .xsds, altri dalla documentazione sui rispettivi siti Web e alcuni sono formati interni personalizzati senza documentazione. Mwahahahaha.
Qual è il problema?
Vorrei testare i miei lettori di file, ma non sono del tutto sicuro su come procedere. Il flusso dell'applicazione è come tale:
file.___ ===> read by FileReader.java ===> which creates a Model object
dove l'interfaccia FileReader
è
public interface FileReader {
public Model read(String filename);
}
Il Model
ha un numero di attributi che vengono popolati quando il file viene letto. Assomiglia a
public class Model {
List<String> as;
List<String> bs;
boolean isAPain = true;
// ...
}
Che cosa ho provato?
La mia unica idea era di creare file "generatori" per ogni formato di file. Questi generatori sono fondamentalmente dei builder che contengono alcune variabili (ad esempio il numero di commenti da generare in un file) e generano un file di esempio che poi ho letto e confrontano il risultante Model
con le variabili che ho usato per generare inizialmente il file.
Questo ha alcuni problemi, però:
- I file che genera non guardano come i file reali. Il generatore non è in alcun modo a conoscenza del contesto.
- È difficile riconoscere se il generatore ha generato per i casi limite poiché io sono quello che imposta manualmente le variabili. Questo metodo è appena migliore di me nella creazione di una dozzina di file di esempio.
Ci sono modi migliori per farlo?
EDIT: modifica l'unità di integrazione poiché questo è ciò che intendo realmente.
EDIT2: Ecco un esempio dei casi limite che ho citato.
Ogni file rappresenta un grafico costituito da vertici e spigoli. Questi vertici e bordi possono essere collegati in diversi modi, quindi:
v1 -- e1 --> v2 <-- e2 -- v3
è diverso da
v1 -- e1 --> v2 -- e2 --> v3
in quanto la direzione dei bordi è importante. Non sono sicuro se questo è nel campo di applicazione della domanda, ma è difficile pensare a tutti i casi limite pertinenti quando imposto manualmente il numero di vertici, il numero di spigoli e solo a generare le connessioni casualmente.