Sto lavorando a un progetto con alcuni formati di file. Alcuni formati sono specificati da .xsds, altri dalla documentazione sui rispettivi siti Web e alcuni sono formati interni personalizzati che non hanno documentazione. Mwahahahaha.
Qual è il problema?
Vorrei testare i miei lettori di file, ma non sono del tutto sicuro di come procedere. Il flusso dell'applicazione è come tale:
file.___ ===> read by FileReader.java ===> which creates a Model object
dove si trova l' FileReader
interfaccia
public interface FileReader {
public Model read(String filename);
}
Il Model
ha una serie di attributi che sono popolate quando il file viene letto. Sembra qualcosa del genere
public class Model {
List<String> as;
List<String> bs;
boolean isAPain = true;
// ...
}
Cosa ho provato
La mia unica idea era quella di creare "generatori" di file per ogni formato di file. Questi generatori sono fondamentalmente costruttori che accettano alcune variabili (ad es. Il numero di commenti da generare in un file) e producono un file di esempio che ho poi letto e confrontato il risultante Model
con le variabili che ho usato per generare inizialmente il file.
Questo ha alcuni problemi, però:
- I file che genera non sembrano file reali. Il generatore non è in alcun modo consapevole del contesto.
- È difficile riconoscere se il generatore è stato generato per casi limite dal momento che sono io a impostare manualmente le variabili. Questo metodo è appena migliore di me creando una dozzina di file di esempio.
Ci sono modi migliori per farlo?
EDIT: unità modificata per l'integrazione poiché questo è ciò che intendo davvero.
EDIT2: Ecco un esempio dei casi limite che ho citato.
Ogni file rappresenta un grafico composto da vertici e bordi. 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 conta la direzione dei bordi. Non sono sicuro che questo rientri nell'ambito della domanda, ma è difficile pensare a tutti i casi relativi ai bordi quando imposto manualmente il numero di vertici, il numero di bordi e genera semplicemente le connessioni in modo casuale.
FileReader
)? Esempio: dati i casi limite rilevati nei formati di file di immagine , per ciascuna voce della tabella, se la combinazione di proprietà riga / colonna è supportata, dovrebbe esserci almeno un caso di test (un file di dati) che copre quella combinazione.