Startschwierigkeiten
Problem 0
Ich versuche die Daten per "Datei - Speichern unter" als HTML zu speichern. Dabei gebe ich an, dass die "Gesamte Arbeitsmappe" gespeichert werden soll. Funktioniert prima, aber meine erzeugte HTML-Datei enthält die Testzeilen nicht :-(((
Lösung: man darf nicht "Gesamte Arbeitsmappe" angeben, sondern den Zellbereich markieren (in dem sich relevante Daten befinden) und dann die Option "Auswahl: Tabelle" verwenden.
Problem 0.5:
Das von Excel erzeugte HTML ist total unübersichtlich und enthält viele Skripte und Formatierungsanweisungen. Hier ein Beispiel: 872361.
Ausserdem enthält die erste Spalte der ersten Zeile der Tabelle nicht den Namen der Fixture, was zu folgender Exception führt:
java.lang.RuntimeException: The fixture "" was not found
at fit.Fixture.loadFixture
Hieraus kann man auch ableiten, dass die erste Spalte der ersten Zeile den Namen der Fixture enthalten muss (nicht unbedingt in Excel, aber im HTML - man hat weniger Arbeit, wenn das auch im Excel-File so ist).
Problem 0.6:
Im Internet Explorer werden die Fehlermdlungen und Exceptions nicht im erzeugten HTML-Output dargestellt. Im Firefox funktionierts.
Problem 1
Mit einem
HTML-Export aus "MS Windows Word" hatte ich keine Probleme, den
FileRunner zum Laufen zu bringen. Anders hingegen mit einer HTML-Export
aus OpenOffice 2.0 heraus. Eine solche Datei konnte nicht geparst
werden:
java.text.ParseException: Can't find tag: td
at fit.Parse.findMatchingEndTag(Unknown Source)
Scheinbar
erzeugt OpenOffice ein anderes HTML als WinWord, was ein Blick in die
erzeugten HTMLs offenbart. OpenOffice erzeugt mit TH-Einträgen für die
Überschriften eigentlich das bessere HTML, doch scheinbar ignoriert der
Parser TH-Einträge, so dass es zu obiger Fehlermeldung kommt.
Es
hilft auch nichts, das HTML-Output-Format (Extras - Optionen -
Laden/Speichern - HTML-Kompatibilität) umzustellen (Default: Netscape,
weitere Optionen: MS Internet Explorer, HTML 3.2, OpenOffice Writer).
Beim Erzeugen einer Tabelle kann man - zumindest über "Tabelle -
Einfügen - Tabelle" - angeben, ob eine Überschrift verwendet und auch
wiederholt werden soll. Dies beseitigt auch ein paar TH-Einträge, doch
der Name der Fixture-Klasse bleibt in TH-Einträgen. Da TH-Einträge vom
Parser ignoriert werden, wird keine Name gefunden und FIT weiss somit
nicht welche Testfixture-Klasse zu starten ist. Die Fehlermeldung ist
dementsprechend: "The fixture "" was not found". In der Klasse ??? sind
diese Zellen-Erkennungs-Tags leider hart codiert, so dass keine Chance
zur Anpassung besteht, ohne den Code zu ändern. Eine mögliche
FIT-Verbesserung?!?
In der Dokumentation steht: "The parser looks for table, tr and td tags ..." und das kann man auch sehr schnell im Code verifizieren (einfach mal den Code des FileRunner.process anschauen).
Lösung: als CSV-Datei exportieren und dann ein selbstgeschriebenes Programm laufen lassen (unser Programm hat den Namen csv2html_2357894.java), das daraus dann HTML macht
Problem 2
Meine
ersten Gehversuche waren in Ordnung, ich bekam die einfachsten
Beispiele zum Laufen. Mein erster Test im Projekt hat mich allerdings
beinahe verzweifeln lassen.
Mein Excel-File:
dreba..prj.ikr.ika.tx.fachseite.KreditartWertelisteTest
|
|
|
kreditartenschluessel
| bezeichnung
| isValid()
|
XXXX
| zur Löschung vorgesehene Kredite
| true
|
0000
| Sonderkondition ohne Limit
| true
|
Leider bekomme ich folgende Fehlermeldung:
kreditartenschluessel
| bezeichnung[1] java.lang.NoSuchFieldException: bezeichnung[1] at java.lang.Class.getField(Class.java:1005) at fit.ColumnFixture.bindField(Unknown Source)
| isValid()
|
Mit
der Fehlermeldung kann ich nicht so viel anfangen, da meine Klasse
dreba.prj.ikr.ika.tx.fachseite.KreditartWertelisteTest folgendermassen
aussieht:
public class KreditartWerteliste extends ColumnFixture {public String kreditartenschluessel;
public String bezeichnung;
}
Tja,
nach langer Recherche finde ich raus, dass es an einer Anmerkung (ein
komisches Excel-Feature, das die Excel-Profis auf Fachseite gerne
nutzen) liegt, die an der Spalte Bezeichnung hängt. Nach Löschung der
Anmerkung funzt es prima. :-(((
Fazit: im Bereich der Fehlermeldungen sollte FIT noch etwas tun.
Problem 3
Schlägt
ein Test wegen einer Exception fehl (bekommt die Farbe gelb), dann gibt
FIT den Stack-Trace aus. Leider wird im Internet Explorer der
Stack-Trace nicht angezeigt (wegen des erzeugten HTMLs), wohl aber im
Firefox.
Ausserdem werden die erwarteten Results im Internet Explorer nicht angezeigt, im Firefox hingegen schon :-)
Das
Problem lässt sich beheben, indem man die Formatierungsanweisungen zu
Beginn des HTML-Dokuments entfernt - aber das ist ja nicht wirklich
befriedigend, denn wir wollen ja nicht immer das durch den Excel-Export
generierte HTML manuell anpassen :-(
Problem 4
In
einem zu berechnenden Wert wird im erzeugten Output-HTML nur "error"
ausgegeben, obwohl ich aus dieser Methode mit einer Exception
rausfliege. Die Exception kommt auch nicht in die am Ende ausgegebene
Statistik (0 right, 0 wrong, 0 exceptions).
Nach der Analyse
des FIT-Source-Codes kommt diese Meldung immer dann, wenn in einer
Zelle eines erwarteteten Ergebniswerts nichts drinsteht und darin eine
Exception auftritt. Ein leerer Wert in einer Ergebniszelle führt nämlich dazu, dass der ermittelte Wert ignoriert wird - er fliesst nicht in die Statistik ein, wird nicht mit rot, grün oder geld gekennzeichnet, sondern es wird nur der berechnete Wert in hellgrau dargestellt. (siehe auch Problem 5)
o
Fazit: im Bereich der Fehlermeldungen sollte FIT noch etwas tun.
Problem 5:
Ich erwarte bei einem Ergebnis keinen Wert (die Methode liefert in diesem Fall auch "null") und trage deshalb auch in die Excel-Zelle ein. Doch die Ergebnisse werden nicht mit rot, grün oder gelb bewertet. Ausserdem fliesst das Ergebnis nicht in die Statistik ein.
Ergebniszellen ohne Inhalt führen dazu, dass der berechnete Wert ignoriert wird - eine leere Zelle ist scheinbar kein gültiges erwartetes Ergebnis. Wenn man das trotzdem will, dann sollte man ein anderes Zeichen als Kennzeichnung für "leer" reinsetzen und entsprechende "null"-Ergebnisse der Methode in dieses Zeichen umwandeln (als Zeichen bietet sich "-" an).
Problem 6:
Mit einem sehr grossen Test (mehrere 10.000 Testzeilen, XML-File hat eine Grösse von 5 MB) geht gar nichts mehr - die VM crasht mit einer OutOfMemory-Meldung. Auch wenn man die Max-Heap-Size der VM (-Xmx) auf 1,5 GB hochsetzt.
Eine Analyse des Source-Codes ergibt, dass die Datei zunächst komplett in einen String eingelesen wird - vielleicht liegt darin schon die Beschränkung.