Junit und Mocks bei JDBC Daos

Status
Nicht offen für weitere Antworten.

mvitz

Top Contributor
Hallo zusammen,

angenommen man baut seine DAOs direkt auf reinem JDBC auf und möchte diese mit Junit tests absichern. Man benötigt idR. eine DataSource, die in das DAO hineingegeben wird. Über die DataSource kommt man an die Connection, darüber wieder an ein Statement und darüber evtl. noch an ein ResultSet.

Bei benutzung eines Mock Frameworks, resultiert das ganze schonmal in einige Zeilen:

1x für jedes der 4 Objekte Mock erzeugen => 4
1x für Connection, Statement und ResultSet zum closen => 3
dann noch getConnection, prepareStatement, executeQuery, next(), und getString() sind nochmal 5. Also so ca. 12 Zeilen.

Wie macht ihr das, ich finde das ganze einen sehr großen Aufwand.
 
M

maki

Gast
Wie macht ihr das, ich finde das ganze einen sehr großen Aufwand.
In Dao Tests zu Mocken finde ich nicht so dolle.
Daos teste ich mit Integrationstests und nutze DBUnit um mir diese Sache zu erleichtern, zusammen mit Spring :)
In anderen Tests verwende ich natürlich Mock-Daos anstatt echter.

Sehr interessant imho: Back Door Manipulation at XUnitPatterns.com
Speziell der Absatz "Example: Back Door Fixture Setup".
 

mvitz

Top Contributor
In Dao Tests zu Mocken finde ich nicht so dolle.
Daos teste ich mit Integrationstests und nutze DBUnit um mir diese Sache zu erleichtern, zusammen mit Spring :)
In anderen Tests verwende ich natürlich Mock-Daos anstatt echter.

Sehr interessant imho: Back Door Manipulation at XUnitPatterns.com
Speziell der Absatz "Example: Back Door Fixture Setup".

Du benutzt doch auch maven, oder?

Wie setzt du/ihr in maven denn dann die Integrationstest auf?
 

faulelotte

Mitglied
Du benutzt doch auch maven, oder?

Wie setzt du/ihr in maven denn dann die Integrationstest auf?

Ich weiß nicht ob im neuen Maven 2.2.0 schon Unterstützung dafür drin ist, es sollte nämlich eine extra Phase it-test für Integrationstests eingeführt werden.

Ansonsten liegen meine Integrationstests momentan zusammen mit den Unittests. Das sind bei mir auch JUnit Tests. (unter zuhilfenahme von DBUnit usw.)
Sauberer wäre vielleicht die Integrationstests in ein einzelnes Maven Module zu verschieben.
 
M

maki

Gast
Es gab bereits eine IT Phase in Maven2, allerdings muss man Package aufrufen um sicherzustellen das die Phase after-it aufgerufen wurde(oder ähnlich), aus diesen und anderen Gründen (Komplexität) sollte man IT Tests in eigene Module auslgern, aber DAO Integrationstests habe ich immer in meiner normalen Testphase aufgerufen (zB. mit einer HSQLDB), waren auch immer teil des selben Moduls.
Wenn man WebApp oder EJBs in einem IT ausführt, mache ich das aber immer in eigenen Modulen und nutze dafür Selenium, Cactus, SpringDM oder andere Tools/frameworks/Libs.
 

faulelotte

Mitglied
aus diesen und anderen Gründen (Komplexität) sollte man IT Tests in eigene Module auslgern, aber DAO Integrationstests habe ich immer in meiner normalen Testphase aufgerufen (zB. mit einer HSQLDB)

Da Integrationstests ja gegen eine echte Datenbank gehen und diese meistens einige Größenordnungen langsamer sind als reine Unittests, lohnt sich das mit dem auslagern auch. Spätestens wenn der Build wegen der Integrationstests irgendwann mehrere Minuten dauert.
 
M

maki

Gast
Ja, wenn der Integrationstest zu langsam wird, wird er ausgelagert, aber das war noch nicht der Fall bei "normalen" DaoTests, zumindest unter zuhilfename von Spring & Optimierungen, denn so ein Rollback ist meist schneller als Daten gezielt zu löschen oder gar ganze Tabellen bzw. Schemata und danach die DB komplett neu zu befüllen.

Eine Regel die ich hier habe, ist das alle Unittests unter 1 Minute laufen müssen, alle Integrationstests unter 10 Minuten. Die Unittests können so oft laufen, und die Interationstest zumindest vom dem Commit, falls doch was durchgeht findet dass der CI Server (Hudson).
 

byte

Top Contributor
Wir testen die DAOs auch einfach als Unittests mit Spring. Benutzen ne embedded Apache Derby für die Tests. Mit Spring lässt sich das recht einfach integrieren. Benutzen TestNG als Testframework und
Code:
org.springframework.test.context.testng. AbstractTransactionalTestNGSpringContextTests
.

Die Tests laufen auch recht zügig durch. Für alle weiteren Tests sollte man die DAOs dann aber mocken.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Junit und Mocks Allgemeine Java-Themen 5
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Junit Test Allgemeine Java-Themen 8
J Junit surefire: enrich test information Allgemeine Java-Themen 0
J Junit start surefire for manual testing Allgemeine Java-Themen 1
P No JUnit tests found Allgemeine Java-Themen 5
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
J JUnit - Auslassen von Code Allgemeine Java-Themen 25
S Zugriff auf jUnit Test Suite Runner-Instanzen innerhalb von Test Classes Allgemeine Java-Themen 7
S Eclipse Probleme beim Implementieren / Ausführen von jUnit 5-Test Suites Allgemeine Java-Themen 14
S Parametrisierte jUnit 5-Tests mit eigenen Datentypen/Klassen-Objekten als Test-Parameter Allgemeine Java-Themen 0
K Input/Output JUnit: Log Inhalte, falsche Assertion Allgemeine Java-Themen 2
H OOP Testen einer Exception mit JUnit Allgemeine Java-Themen 8
AssELAss Junit-Tests für SQL-Veribindung sowie SQL-Queries? Allgemeine Java-Themen 3
O Maven - JUnit - H2 Allgemeine Java-Themen 1
M Selenium JUnit Tests (Auswahl von Testmethoden auswerten) Allgemeine Java-Themen 5
C JUNIT - ANT - build.xml Allgemeine Java-Themen 0
Airwolf89 JUnit: Vorschläge/ Best Practice Allgemeine Java-Themen 7
M JUnit Serverseitig? Wie geht sowas? Allgemeine Java-Themen 2
E JUnit wie Testergebnisse pro Test ("Test Report") erhalten? Allgemeine Java-Themen 1
B JUnit Zufalls Operation testen Allgemeine Java-Themen 1
P JUnit Allgemeine Java-Themen 2
B jUnit 4: Wie protokolliert man Testergebnisse? Allgemeine Java-Themen 1
H JUnit Fehler beim Compilieren - erledigt Allgemeine Java-Themen 0
M JUnit Test Suites Allgemeine Java-Themen 2
L JUnit - automatisiertes vs. manuelles Testen? Allgemeine Java-Themen 6
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
M JUnit & Multithreading - sehr seltener Fehler Allgemeine Java-Themen 3
A JUnit/Hashcode Problem Allgemeine Java-Themen 5
X Problem mit URLClassLoader und JUnit Allgemeine Java-Themen 3
N JUnit Allgemeine Java-Themen 13
M Junit Tests durchführen Allgemeine Java-Themen 18
M JVM Probleme JUnit Allgemeine Java-Themen 2
G NUnit Features in JUnit Allgemeine Java-Themen 2
darekkay (JUnit) Testdaten generieren - Framework? Allgemeine Java-Themen 2
A JUnit problem Allgemeine Java-Themen 9
T Organisation von Junit Testfällen? Allgemeine Java-Themen 2
M JUnit Tests vs. DBUnit Tests Allgemeine Java-Themen 3
P Klassen Junit test funktioniert nicht... Allgemeine Java-Themen 11
S Die Zeile die JUnit gerade ausführt lesen Allgemeine Java-Themen 15
aze JUnit: Testen ob bestimmte Exception nicht auftritt Allgemeine Java-Themen 18
U Fehler: Hauptklasse org.junit.runner.JUnitCore konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 2
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
J JUnit-Tests Zeichensatzproblem ? Allgemeine Java-Themen 2
J JUnit, TestCase vs "einfacher" Test Allgemeine Java-Themen 3
S [JUnit] Name von TestCase bekommen Allgemeine Java-Themen 4
1 JUnit Test Suit Allgemeine Java-Themen 2
T Junit-Tests in Java Klasse ausführen Allgemeine Java-Themen 26
J JUnit - werfen von Exceptions testen Allgemeine Java-Themen 17
M JUnit TestSuite erstellen Allgemeine Java-Themen 2
B JUnit und mehrere Instanzen der selben Applikation Allgemeine Java-Themen 4
G Testcases mit Junit auf private-Methode Allgemeine Java-Themen 7
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
C JUnit und das Zulassen von RuntimeExceptions Allgemeine Java-Themen 5
ruutaiokwu junit mit annotations geht nicht? Allgemeine Java-Themen 5
T JUnit-Log auslesen Allgemeine Java-Themen 13
C JUnit Tests Allgemeine Java-Themen 4
fastjack JUnit Supplementary Classes Allgemeine Java-Themen 4
O Junit Reports / Logs als XML ohne Maven/Ant Allgemeine Java-Themen 7
fastjack jUnit und Test von equals, hashCode, toString Allgemeine Java-Themen 11
D junit - frage zu fixtures/test suites Allgemeine Java-Themen 11
A Seltsames Verhalten von JUnit-Tests im Zusammenspiel mit Ant Allgemeine Java-Themen 6
S JUnit: Erzeugen einer IOException Allgemeine Java-Themen 9
G JUnit Tests Allgemeine Java-Themen 7
G JUnit Test Allgemeine Java-Themen 5
S JUnit - was mocken, was nicht? Allgemeine Java-Themen 3
S JUnit TesSuite und @Repeat Allgemeine Java-Themen 2
S JUnit Tests für GUI / Oberflächen Allgemeine Java-Themen 2
M JUnit Problem mit AssertionFailedError Allgemeine Java-Themen 2
B Testfälle mit JUnit Allgemeine Java-Themen 4
S JUnit Allgemeine Java-Themen 15
N ClassNotFound Exception bei JUnit Test? Allgemeine Java-Themen 2
G ANT Tutorial . Schritte bzgl. Junit Bibliothek Allgemeine Java-Themen 4
A JUnit Reports zu groß für XSLT Allgemeine Java-Themen 4
M JUnit und dynamische Tests Allgemeine Java-Themen 11
P JUnit unter Eclipse: Problem mit Exception Allgemeine Java-Themen 8
GilbertGrape Warum schlägt JUnit-Test fehl? Allgemeine Java-Themen 19
K Bekomme JUnit TEst nicht zum laufen :( Allgemeine Java-Themen 9
K Junit: Frage zum Ablauf Allgemeine Java-Themen 3
K JUnit: Tests über ant aufrufen Allgemeine Java-Themen 2
S JUnit und EasyMock Allgemeine Java-Themen 7
B Wie alt ist JUnit? Allgemeine Java-Themen 2
A Junit Exceptions testen Allgemeine Java-Themen 3
P Testen mit JUnit Allgemeine Java-Themen 8
7 JUnit: Testproblem. Allgemeine Java-Themen 23
G Ant + JUnit Allgemeine Java-Themen 2
F JUnit unter Ant Allgemeine Java-Themen 3
S Integer zu int konvertieren - JUnit Allgemeine Java-Themen 12
G testen mit JUnit? Allgemeine Java-Themen 3
K JUnit 4 User Interaktion Allgemeine Java-Themen 7
M Ant + Junit + Testclass in Jar Allgemeine Java-Themen 3
G Junit 4 - TestSuite Allgemeine Java-Themen 6
B JUnit Allgemeine Java-Themen 2
T CheckStyle, JUnit und FindBugs aus Java-Programm starten Allgemeine Java-Themen 2
S JUnit will ins Netz! Allgemeine Java-Themen 2
B JUnit - Gleichen Test x-mal durchlaufen Allgemeine Java-Themen 2
F Hilfe: Adjazenzmatrix mittels JUnit testen. Allgemeine Java-Themen 2
H JUnit Allgemeine Java-Themen 5
N Problem mit Ant und JUnit Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben