Я працюю над проектом з кількома форматами файлів. Деякі формати задаються .xsds, інші - документацією на відповідних веб-сайтах, а деякі - власні власні формати, які не мають документації. Мвахахахаха.
В чому проблема?
Я хотів би перевірити своїх читачів файлів, але я не зовсім впевнений, як це зробити. Потік програми є таким:
file.___ ===> read by FileReader.java ===> which creates a Model object
де FileReader
інтерфейс
public interface FileReader {
public Model read(String filename);
}
Model
Має ряд атрибутів , які заповнюються при читанні файлу. Це схоже на щось подібне
public class Model {
List<String> as;
List<String> bs;
boolean isAPain = true;
// ...
}
Що я спробував?
Єдина моя ідея полягала в тому, щоб створити файлові "генератори" для кожного формату файлу. Ці генератори в основному є будівельниками, які беруть декілька змінних (наприклад, кількість коментарів, які потрібно створити у файлі), і виводять зразок файлу, який я потім прочитав, і порівняю отриманий Model
з змінними, які я використовував для початкового створення файлу.
Однак у цього є кілька проблем:
- Файли , які він генерує , НЕ виглядають як справжні файли. Генератор жодним чином не усвідомлює контекст.
- Важко розпізнати, чи створив генератор для крайових випадків, оскільки я вручну встановлюю змінні. Цей метод ледве кращий за мене, створюючи десяток зразкових файлів.
Чи є кращі способи зробити це?
EDIT: Змінено одиницю на інтеграцію, оскільки саме це я маю на увазі.
EDIT2: Ось приклад кращих випадків, про які я згадав.
Кожен файл представляє графік, що складається з вершин і ребер. Ці вершини та ребра можуть бути прикріплені різними способами, так:
v1 -- e1 --> v2 <-- e2 -- v3
відрізняється від
v1 -- e1 --> v2 -- e2 --> v3
в тому, що напрямок ребер має значення. Я не впевнений, чи є це в обсязі питання, але важко придумати всі відповідні випадки ребер, коли я вручну встановлюю кількість вершин, кількість ребер і просто генерую з'єднання випадковим чином.
FileReader
реалізації)? Приклад: з урахуванням крайових випадків, знайдених у форматах файлів зображень , для кожного запису таблиці, якщо підтримується поєднання властивостей рядків / стовпців, має бути принаймні один тестовий випадок (файл даних), що охоплює цю комбінацію.