Dienstag, 17. März 2009

 

Testklasse für UrlyBird

Die Testklasse DataTest.java (beim Speichern die Versionskennung entfernen) funktioniert nur, wenn die Datenbankdatei db-1x2.db im Basisverzeichnis des Projekts liegt, die Data-Klasse sowie die entsprechenden Exceptions im vorgegebenen Package liegen.
Man kann die Testklasse als Programm starten:

java -cp ../vendor/junit.jar:. test.DataTest

Dabei ist zu beachten, dass man JUnit 3.8 im CLASSPATH hat (Parameter -cp ../vendor/junit.jar:. für Linux, wenn junit.jar im angegebeenen Verzeichnis ist). Mit der Option --gui kann man die Tests auch mit einer graphischen Oberfläche starten:

java -cp ../vendor/junit.jar:. test.DataTest --gui

In Eclipse kann man die Klasse natürlich auch als JUnit-Test starten.

Die Testklasse legt bei jedem Test eine Kopie der Datenbank (db-1x2.db.sav) an, damit die Originaldatenbank erhalten bleibt. Nach jedem Test wird die Datenbank wieder hergestellt.

Achtung: Die Testklasse geht davon aus, dass zusätzlich zum geforderten Interface zwei Methoden implementiert wurden:
  1. getCntRecords() ... liefert die Anzahl der Datensätze (incl. jener, die als gelöscht markiert sind).
  2. getNumFields() ... liefert die Anzahl der Felder.
In der Angabe wurde nicht genau spezifiziert, wie man das Ende der Datei erkennen kann, denn es steht einerseits explizit drinnen, dass das Lesen eines gelöschten Datensatzes eine RecordNotFoundException bewirkt, gelöschte Datensätze für neue verwendet werden sollen und es andererseits keinen EOF-Mechanismus gibt. Man könnte diesen Unit-Test diesbezüglich an die gegebene Datei anpassen und die Anzahl der Datensätze fix definieren.
Die Anzahl der Felder ist eigentlich auch vorgegeben und könnte daher im Test fix definiert werden.

Wollen Sie sich genau an das geforderte Interface halten, so müssen Sie die Testklasse entsprechend anpassen.

Die Angabe ist diesbezüglich ungenau.

Labels: , ,


Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]





<< Startseite

This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]