Saya sedang mengerjakan proyek dengan beberapa format file. Beberapa format ditentukan oleh .xsds, lainnya oleh dokumentasi di situs web masing-masing, dan beberapa format khusus yang tidak memiliki dokumentasi. Mwahahahaha.
Apa masalahnya?
Saya ingin menguji pembaca file saya, tetapi saya tidak sepenuhnya yakin bagaimana cara melakukan ini. Alur aplikasi adalah sebagai berikut:
file.___ ===> read by FileReader.java ===> which creates a Model object
di mana FileReader
antarmuka
public interface FileReader {
public Model read(String filename);
}
The Model
memiliki sejumlah atribut yang dihuni ketika file tersebut dibaca. Itu terlihat seperti
public class Model {
List<String> as;
List<String> bs;
boolean isAPain = true;
// ...
}
Apa yang sudah saya coba?
Satu-satunya ide saya adalah membuat file "generator" untuk setiap format file. Generator ini pada dasarnya adalah pembangun yang menerima beberapa variabel (mis. Jumlah komentar untuk dihasilkan dalam file), dan mengeluarkan file sampel yang kemudian saya baca dan bandingkan hasilnya Model
dengan variabel yang saya gunakan untuk menghasilkan file.
Ini memiliki beberapa masalah, meskipun:
- File yang dihasilkannya tidak terlihat seperti file nyata. Generator sama sekali tidak menyadari konteksnya.
- Sulit untuk mengenali apakah generator telah menghasilkan kasus tepi karena akulah yang secara manual mengatur variabel. Metode ini hampir tidak lebih baik daripada saya membuat selusin file sampel.
Apakah ada cara yang lebih baik untuk melakukan ini?
EDIT: Mengubah unit menjadi integrasi karena itulah yang saya maksud sebenarnya.
EDIT2: Berikut adalah contoh dari kasus tepi yang saya sebutkan.
Setiap file mewakili grafik yang terdiri dari simpul dan tepi. Vertikal dan tepi ini dapat dilampirkan dengan berbagai cara, jadi:
v1 -- e1 --> v2 <-- e2 -- v3
berbeda dengan
v1 -- e1 --> v2 -- e2 --> v3
dalam hal arah tepi penting. Saya tidak yakin apakah ini dalam lingkup pertanyaan, tetapi sulit untuk memikirkan semua kasus tepi terkait ketika saya secara manual mengatur jumlah simpul, jumlah tepi, dan hanya menghasilkan koneksi secara acak.
FileReader
implementasi aktual )? Contoh: mengingat kasus tepi yang ditemukan dalam format file gambar , untuk setiap entri tabel, jika kombinasi baris / kolom dari properti didukung, harus ada setidaknya satu kasus uji (file data) yang mencakup kombinasi itu.