Ich arbeite an einem Projekt mit einigen Dateiformaten. Einige Formate werden von .xsds angegeben, andere von der Dokumentation auf den jeweiligen Websites, und einige sind benutzerdefinierte interne Formate, für die keine Dokumentation vorhanden ist. Mwahahahaha.
Was ist das Problem?
Ich möchte meine Dateireader testen, bin mir aber nicht ganz sicher, wie ich das machen soll. Der Ablauf der Anwendung ist wie folgt:
file.___ ===> read by FileReader.java ===> which creates a Model object
Wo ist die FileReader
Schnittstelle
public interface FileReader {
public Model read(String filename);
}
Die Model
hat eine Reihe von Attributen, die beim Lesen der Datei ausgefüllt werden. Es sieht ungefähr so aus
public class Model {
List<String> as;
List<String> bs;
boolean isAPain = true;
// ...
}
Was habe ich versucht?
Meine einzige Idee war, Datei "Generatoren" für jedes Dateiformat zu erstellen. Bei diesen Generatoren handelt es sich im Grunde genommen um Builder, die einige Variablen (z. B. die Anzahl der zu generierenden Kommentare in einer Datei) aufnehmen und eine Beispieldatei ausgeben, die ich dann einlese und Model
mit den Variablen vergleiche, mit denen ich die Datei ursprünglich generiert habe.
Dies hat jedoch einige Probleme:
- Die Dateien , die es erzeugt nicht aussehen wie echte Dateien. Der Generator ist in keiner Weise kontextbezogen.
- Es ist schwer zu erkennen, ob der Generator für Flankenfälle generiert hat, da ich die Variablen manuell einstelle. Diese Methode ist kaum besser als ich, wenn ich ein Dutzend Beispieldateien erstelle.
Gibt es dafür bessere Möglichkeiten?
EDIT: Unit auf Integration umgestellt, da ich das eigentlich meine.
EDIT2: Hier ist ein Beispiel für die Randfälle, die ich erwähnt habe.
Jede Datei stellt ein Diagramm dar, das aus Eckpunkten und Kanten besteht. Diese Eckpunkte und Kanten können auf verschiedene Arten verbunden werden:
v1 -- e1 --> v2 <-- e2 -- v3
unterscheidet sich von
v1 -- e1 --> v2 -- e2 --> v3
, dass die Richtung der Kanten von Bedeutung ist. Ich bin mir nicht sicher, ob dies im Rahmen der Frage liegt, aber es ist schwierig, alle relevanten Kantenfälle zu erdenken, wenn ich die Anzahl der Scheitelpunkte und Kanten manuell einstelle und die Verbindungen nur zufällig generiere.
FileReader
Implementierung ausgelöst werden könnten )? Beispiel: Unter Berücksichtigung der in Bilddateiformaten gefundenen Randfälle sollte für jeden Tabelleneintrag, wenn die Zeilen- / Spaltenkombination von Eigenschaften unterstützt wird, mindestens ein Testfall (eine Datendatei) vorhanden sein, der diese Kombination abdeckt.