Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Unterschied zwischen Integrationstest und JUnit test?
Während man beim Unit Testing einzelne Komponenten testet, werden beim Testen der
Integration mehrere integrierte Komponenten auf einmal getestet. Haben sich einzelne
Komponenten beim Unit Testing bewährt, so werden diese in das System integriert und
dann getestet.
(oder auch kurz: Unit-TestTest der einzelnen Methoden einer Klasse
IntegrationstestTest der Integration mehrerer Module)
ICh verstehe das schon, nun sind alle zusammen gewuerfelt und ich soll sie trennen.wie genau erkenne ich dass das nun ein intergrationstest ist???
Wenn mehrere Klassen inizialisiert werden, kann ich dann von ausgehen das es ein intergrationstest ist???
Oder kann ich vom AUfbau sehen, das es ein Integrationstest ist!
Es waere ein Code BEispiel auch sehr schoen ...wo ich eventuell die unterschiede sehe!DANKE :rtfm:
Wenn die Klassen in deinem großen Test untereinander Kommunizieren bzw. Daten austauschen ist das ja Integrationstest. Bei Unit-Tests bleibst du generell nur in einer Klasse und beeinflusst die anderen Komponenten so gut wie gar nicht.
naja alle sind in einem package....ich soll sie jetzt trennen.
das einemal
../src/test/ und ../src/integrationtest/ gibt.
Ich bin mir meisten nicht wirklich sicher, was es genau ist!:bahnhof:
Ich kann raten, aber das ist ja nicht der Sinn der sache
Also gibt es was, das ich das genau sehe?????:L
und kann ich von ausgehen, dass wenn mehrere assert - Abfragen in dem TEst stehen, es ein Integrationstest ist? NEin oder? Kann auch einfach sein, das der JUnit nicht besonders gut geschrieben ist, weil er nicht jedes Verhalten einzeln testet oder????:bahnhof:
Was ist, wenn man eine Klasse_1 hat, die getestet werden woll und die methode die grad getestet wird, ein Uebergabewert hat von einer anderen Klasse_2 und diese nicht gemockt wird, sondern richtig inizialisiert wird.Ist das dann schon ein Integrationstest?
Oder wenn es eine Hilfsmethode gibt, die andere Klassen_2 Objekte braucht, um die zu testende Klassen_1 zu testen???Dann ist es noch ein JUnit test oder~???
Zwei oder mehre Klassen getestet, heisst ja dann nur wenn zwei Asser -Ausdruecke......gibt, mit zwei verschiedenen Klassen oder???
Das heisst auch wenn ich mehrere Klassen Objekte zum Testen brauche, heisst es nciht gleich , dass es ein Integrationstest ist? SOndern nur wenn mehr als eine Klasse im gleichen Test eine Assert -Abfrage hat! Ist das so richtig????
Ist es nicht meistens so, dass wenn man in einer Test Klasse Mocks hat, es sich um einen JUnit test handelt? Da Mock ja nur so tut als würde man mit anderen Klassen kommunizieren....
-> Ohne Mocks wäre es dann ein Integrationstest, da man dann mit den echten Klassen kommuniziert und somit das ganze Kkomplette System testet...
Ich denke hier kann man nicht 100%ig abgrenzen.
Was macht für mich den Unterschied in der Praxis? Das ganze drum herum, für einen Integrationstest brauche ich oft eine kleine H2 Testdatenbank und einen Spring Context um den Zusammenspiel quer durch die Schichten zu testen. Ein Unit Test sollte sehr isuliert ablaufen können.
Ich würd einfach nochmal den fragen, der dir die Aufgabenstellung gegeben hat.
Kurz noch eine allgemeine Erklärung, weil das im Titel falsch rüberkommt.
Es gibt verschiedene Tests: Modultests (oder auch Unit-Tests), Integrationstests und Systemtests.
Modultests bzw. Unit-Tests testen eine möglichst kleine, in sich geschlossene Einheit. Dazu verwendet man als Java-Entwickler in der Regel JUnit. JUnit ist ein Framework, um Tests zu schreiben und auszuführen. Deswegen ist der Begriff "JUnit-Test" etwas irreführend.
Integrationstests testen mehrere Komponenten im Zusammenspiel. Auch das kann man mit JUnit machen, manchmal empfiehlt es sich aber das mit anderen Werkzeugen zu tun.
Systemtests testen dann das gesamte Produkt als Ganzes mit allen Komponenten. Das machst du dann nicht mehr mit JUnit, da kannst du zum Beispiel Tools benutzen, die eine Benutzereingabe simulieren oder man setzt tatsächlich irgendwelche Menschen dran.
IMHO sollte man das auch, weil oft das Verständnis fehlt um Integrationstests und isolierte Unittests zu unterscheiden, aber isolierte Unittests sehr andere Eigenschaften haben als Integrationstests.
Letztere sind sehr fragil, testen meist Blackboxes, sehr viel Code und brauchen meist viel mehr + komplexere Testdaten und haben oft viele Abhängigkeiten, eine kleine Änderung im System kann viele Integrationstests zum versagen bringen, die Fehler aus den Integrationstest zeigen einem oft nicht genau wo der Fehler liegt usw.
Isolierte Unittests sind das komplette Gegenteil davon: sehr stabil, kaum Abhängigkeiten, testen Whiteboxes, einfache "Testdaten" bzw. Mocks und die Fehlermeldungen zeigen einem im Idealfall die Zeile im prod. Code die falsch ist (die sog. "defect localisation" wurde mal von Kent Beck als Hauptmerkmal von guten isolierten Unitests vorgeschlagen).
Für echtes TDD zB. taugen nur isolierte Unittests.