Thread: [Tasktlogger-devel] unit tests
Brought to you by:
teiniker
From: Pratter T. <Tho...@fh...> - 2006-10-13 09:15:24
|
hallo, unit tests werden in der reihenfolge ausgef=FChrt in der sie definiert = sind. Wenn es eine JUnit Klasse DeveloperDAOTest gibt, in der die = Methoden in folgender Reihenfolge vorkommen: testCreateDeveloper() testReadDeveloper() testDeleteDeveloper() hat sich das Problem erledigt. Weiters k=F6nnen in jeder JUnit Klasse die Methoden setUp() und = tearDown() =FCberschrieben werden, welche vor bzw nach dem ausf=FChren = der Testmethoden ausgef=FChrt werden. Jedenfalls sollte sich ein Test nicht darauf verlassen, dass gewisse = ben=F6tigte Daten in der Datenbank vorhanden sind, sondern sich seine = Testdaten vor dem Ausf=FChren der Tests anlegen und die Datenbank nach = Beendigung der Tests wieder bereinigen. lg, thomas -----Original Message----- From: tas...@li... on behalf of = Roland WALTER Sent: Fri 13.10.2006 10:00 To: tas...@li... Subject: [Tasktlogger-devel] Unit Tests =20 Hallo, ich habe eine Frage zum Thema Unit Tests.=20 Wie wird sichergestellt, dass vor Testbeginn ein konsistenter Datensatnd = in der DB besteht auf den der Test zur=FCckgreifen kann. z.B: Delete Developer -> Es sollte vor dem Test bereits sichergestellt = sein dass ein bestimmter Entwickler in der Datenbank vorhanden ist. Da alle Testf=E4lle in einer Testsuite durchlaufen werden, m=FCsste = eigentlich vor jedem Test die Datenbank in dem Zustand sein, welchen = sich der Test erwartet. Anders Beispiel getAllDevelopers() -> hier wird der Test =FCberpr=FCfen = ob die Anzahl er zur=FCckgelieferten Developer Objekte der erwarteten = Anzahl entsprechen. Gibts er hierzu Erfahrungen, Vorschl=E4ge, Anregungen? Lg Roland |
From: Eisendle C. F. <Chr...@fh...> - 2006-10-13 12:27:18
|
> Wenn jetzt die L=F6schfunktionalit=E4t nicht funktioniert, wie sollte > dann die Datenbank bereinigt werden? (Kann ihn ja nicht mit der > gleichen Logik im tearDown() l=F6schen -> hat ja einen Fehler) Deswegen w=FCrde ich die Datenbank nicht =FCber setUp bzw tearDown f=FCllen bzw. leeren, sondern =FCber ein SQL Skript, welches dann von = ant dementsprechend aufgerufen wird. lg |
From: Roland W. <wal...@gm...> - 2006-10-13 12:55:59
|
Klingt vern=FCnftig, dann muss halt f=FCr jede Zieldatenbank so ein = Script erstellt werden. =20 Lg =20 =20 _____ =20 Von: tas...@li... [mailto:tas...@li...] Im Auftrag von Eisendle Christian Friedrich Gesendet: Freitag, 13. Oktober 2006 14:27 An: tas...@li... Betreff: [Tasktlogger-devel] unit tests =20 =20 > Wenn jetzt die L=F6schfunktionalit=E4t nicht funktioniert, wie sollte > dann die Datenbank bereinigt werden? (Kann ihn ja nicht mit der > gleichen Logik im tearDown() l=F6schen -> hat ja einen Fehler) Deswegen w=FCrde ich die Datenbank nicht =FCber setUp bzw tearDown f=FCllen bzw. leeren, sondern =FCber ein SQL Skript, welches dann von = ant dementsprechend aufgerufen wird. lg=20 |
From: Martin K. <mar...@gm...> - 2006-10-13 12:57:26
|
Ich stimme da ganz dem Christian zu.=20 =20 Allerdings ist es schon ein gewisser Aufwand sozusagen eine Datenbank =84frisch=93 zu erzeugen und die Infrastruktur f=FCr die Tests zu bauen. = Genau f=FCr diesen Zweck sind z.B. so Datenbanken wie =84HSQLDB=93 und Apache Derby = gut geeignet da diese nicht installiert werden m=FCssen. =20 =20 Der Test von der DB-Schicht ist sowieso eine heikle Angelegenheit. =20 =20 LG =20 Martin =20 _____ =20 Von: tas...@li... [mailto:tas...@li...] Im Auftrag von Eisendle Christian Friedrich Gesendet: Freitag, 13. Oktober 2006 14:27 An: tas...@li... Betreff: [Tasktlogger-devel] unit tests =20 =20 > Wenn jetzt die L=F6schfunktionalit=E4t nicht funktioniert, wie sollte > dann die Datenbank bereinigt werden? (Kann ihn ja nicht mit der > gleichen Logik im tearDown() l=F6schen -> hat ja einen Fehler) Deswegen w=FCrde ich die Datenbank nicht =FCber setUp bzw tearDown f=FCllen bzw. leeren, sondern =FCber ein SQL Skript, welches dann von = ant dementsprechend aufgerufen wird. lg=20 |
From: Roland W. <wal...@gm...> - 2006-10-13 12:15:43
|
=84Jedenfalls sollte sich ein Test nicht darauf verlassen, dass gewisse ben=F6tigte Daten in der Datenbank vorhanden sind=93 genau das meinte = ich. =20 Reihenfolge ist mir klar. Du meinst dass dann ein testDeleteDeveloper() = im setUP() zuerst einen Developer anlegt (soweit so klar).=20 Wenn jetzt die L=F6schfunktionalit=E4t nicht funktioniert, wie sollte = dann die Datenbank bereinigt werden? (Kann ihn ja nicht mit der gleichen Logik im tearDown() l=F6schen -> hat ja einen Fehler) =20 Lg=20 Roland =20 _____ =20 Von: tas...@li... [mailto:tas...@li...] Im Auftrag von Pratter Thomas Gesendet: Freitag, 13. Oktober 2006 11:15 An: tas...@li... Betreff: [Tasktlogger-devel] unit tests =20 hallo, unit tests werden in der reihenfolge ausgef=FChrt in der sie definiert = sind. Wenn es eine JUnit Klasse DeveloperDAOTest gibt, in der die Methoden in folgender Reihenfolge vorkommen: testCreateDeveloper() testReadDeveloper() testDeleteDeveloper() hat sich das Problem erledigt. Weiters k=F6nnen in jeder JUnit Klasse die Methoden setUp() und = tearDown() =FCberschrieben werden, welche vor bzw nach dem ausf=FChren der = Testmethoden ausgef=FChrt werden. Jedenfalls sollte sich ein Test nicht darauf verlassen, dass gewisse ben=F6tigte Daten in der Datenbank vorhanden sind, sondern sich seine Testdaten vor dem Ausf=FChren der Tests anlegen und die Datenbank nach Beendigung der Tests wieder bereinigen. lg, thomas -----Original Message----- From: tas...@li... on behalf of = Roland WALTER Sent: Fri 13.10.2006 10:00 To: tas...@li... Subject: [Tasktlogger-devel] Unit Tests Hallo, ich habe eine Frage zum Thema Unit Tests. Wie wird sichergestellt, dass vor Testbeginn ein konsistenter Datensatnd = in der DB besteht auf den der Test zur=FCckgreifen kann. z.B: Delete Developer -> Es sollte vor dem Test bereits sichergestellt = sein dass ein bestimmter Entwickler in der Datenbank vorhanden ist. Da alle Testf=E4lle in einer Testsuite durchlaufen werden, m=FCsste = eigentlich vor jedem Test die Datenbank in dem Zustand sein, welchen sich der Test erwartet. Anders Beispiel getAllDevelopers() -> hier wird der Test =FCberpr=FCfen = ob die Anzahl er zur=FCckgelieferten Developer Objekte der erwarteten Anzahl entsprechen. Gibts er hierzu Erfahrungen, Vorschl=E4ge, Anregungen? Lg Roland=20 |