JUnit

Thaitanium

Mitglied
Moin,

ich habe drei Testmethoden innerhalb einer Testklasse. Wenn die erste Methode fehlschlägt müssen die anderen zwangsläufig auch fehlschlagen weil sie aufeinander aufbauen. Sprich wenn die erste Methode fehlschlägt sollen die anderen gar nicht erst weiter ausgeführt werden. Gibt es eine simple Methode dies zu realisieren?

Gruß
Thai
 
Zuletzt bearbeitet:

kama

Top Contributor
Hi,

mithilfe von TestNG läßt sich das Problem recht einfach lösen...

Java:
@Test
public void serverStartedOk() {}
 
@Test(dependsOnMethods = { "serverStartedOk" })
public void method1() {}

Dabei ist aber zu beachten, dass Du wohl schon im Bereich der Integrations Tests bist...da Unit Test per Definition unabhängig voneinander sein müssen.

Gruß
Karl-Heinz Marbaise
 

Thaitanium

Mitglied
OK, tut mir Leid bin noch Anfänger.
Ist TestNG dann auch fürs Unit testen oder wie darf ich Deine "Warnung" verstehen?
Ich bin in JUnit gelandet a) weil ich das aus der Uni kenne ^^ und b) weil Selenium mir das vorgeschlagen hat.

Und zu dem Link von Trollllllll.
Ich verstehe den Thread bzw. das Problem glaub ich nicht ganz.
Denn wenn er die Tests in verschiedenen Klassen hat, kann er doch die Reihenfolge in der Testsuite klasse bestimmen. Wie gesagt hab das ganz nich so ganz verstanden und bin auch noch Anfänger :)

Zu meinem Problem:
Ich simuliere mit Selenium Uservehalten auf einer Seite. In meinem konkreten fall gerade habe ich das folgendermaßen gegliedert:
1. Testmethode: Seite aufrufen.
2. Testmethode:Einloggen/durch die Seite navigieren.
3. Testmethode: Den Inhalt eines bestimmten Feldes prüfen.

So wenn nun die Seite nicht aufgerufen werden kann, funktioniert auch das Einloggen/Navigieren nicht. Sprich die ganze Testklasse soll abbrechen. Und sowas ist mit JUnit nicht möglich?
Also soll ich z.B.: auf TestNG ausweichen? Oder ist das auch eher eine Notlösung? Wie sollte ich denn sonst daran gehen?

Danke schonmal im Voraus
Thai
 

tfa

Top Contributor
Mit TestNG ist das möglich. Die Dokumentation findest du hier: TestNG

Deine Beschreibung lässt vermuten, dass du keine Unit-Tests hast. Unit-Tests testen wirklich nur ein isoliertes Stück Software (z.B. eine Methode). Wenn Sessions, Logins usw. ins Spiel kommen (und die nicht gemockt werden), sind wir schon bei Integrations- oder sogar Systemtests. Um die durchzuführen kann man sicherlich auch JUnit benutzen (meiner Meinung nach ist es ein Fehler von JUnit, dass es JUnit heißt), TestNG bietet hierzu aber deutlich mehr Möglichkeiten.
 
M

maki

Gast
(meiner Meinung nach ist es ein Fehler von JUnit, dass es JUnit heißt)
.. genau dieser Fehler führt seit Jahren zu eigentlich überflüssigen Missverständnissen, DIskussionen und Ausführungen.


..weil sie aufeinander aufbauen...
Würde mir wirklich nochmal überlegen ob du dass so machen willst..

Inwiefern hängen die Tests voneinander ab?
Erzeugen die Tests die zuerst laufen etwa Testdaten in der DB für die Tests die danach laufen?
Das wäre jedenfalls keine so gute Idee IMHO.

Nachtrag:
Lese gerade dass es um einen Selenium Test und Login handelt.. insofern den letzten Absatz bitte ignorieren.
 
Zuletzt bearbeitet von einem Moderator:
A

Akeshihiro

Gast
Warum soll das ein Fehler sein? Ich wüsste nicht, dass JUnit jemals für Vergewaltigungen der heutigen Art gedacht war, sondern einfach nur für Unit-Tests. Da kann JUnit doch nix dafür, dass Leute versuchen es als eine Art Betriebssystem zu verwenden, das alles können soll.
 

tfa

Top Contributor
Warum soll das ein Fehler sein? Ich wüsste nicht, dass JUnit jemals für Vergewaltigungen der heutigen Art gedacht war, sondern einfach nur für Unit-Tests. Da kann JUnit doch nix dafür, dass Leute versuchen es als eine Art Betriebssystem zu verwenden, das alles können soll.

Warum sollte man JUnit nicht für Integrationstests benutzen dürfen? Wenn man unter Eclipse-PDE entwickelt, hat man sogar keine andere Wahl als JUnit.
Außerdem bietet JUnit selbst die Möglichkeit, ein Timeout für Tests anzugeben. Wozu sollte man das bei ausschließlich Unittests brauchen?
 
A

Akeshihiro

Gast
Ich hab nie gesagt, dass man das nicht darf. Ich hab nur gesagt, dass das ursprünglich sicherlich nicht für sowas vorgesehen war, zumal es zu der Zeit nichts vergleichbares gab. Der Name mag heute vielleicht nicht ganz passen, aber man darf nicht vergessen, dass JUnit in der heutigen Form viele Veränderungen mitgemacht hat und anfangs nicht so aussah. Zudem sehe ich auch einen Integrationstest als eine Art Unit-Test, nur ist die Unit dann etwas größer als nur eine Methode, das wars dann aber auch schon. Man hat nach wie vor eine Ausgangssituation X und will nach Abarbeitung unter bestimmten Rahmenbedingungen die Situation Y vorfinden.
 

tfa

Top Contributor
Ich hab nie gesagt, dass man das nicht darf.

Dein "Ich wüsste nicht, dass JUnit jemals für Vergewaltigungen der heutigen Art gedacht war" ließ mich das denken.

Zudem sehe ich auch einen Integrationstest als eine Art Unit-Test, nur ist die Unit dann etwas größer als nur eine Methode, das wars dann aber auch schon.
Das finde ich überhaupt nicht. Unittest und Integrationstest sind schon grundlegend verschieden. Aber wie maki schon sagte, ist die Diskussion hierüber wohl überflüssig.
 
M

maki

Gast
Der Name mag heute vielleicht nicht ganz passen
Der Name hat auch früher schon nicht gepasst, denn Integrationstests konnte man schon immer damit schreiben, nicht nur Unittests, und die Unterschiedung zwischen Unittest und Integrationtest ist älter als JUnit.

Unittests sind nunmal nicht dasselbe wie Integrationstests, per Definition, der Name "JUnit" verwirrt genug Anfänger in dem Bereich.
 
A

Akeshihiro

Gast
Unittests sind nunmal nicht dasselbe wie Integrationstests, per Definition, der Name "JUnit" verwirrt genug Anfänger in dem Bereich.
Ja gut, das ist schon richtig. Aber naja, was sollen Anfänger auch mit Integrationstests?

Ich werfe da mal Spock noch mit rein. Damit schreibt man Spezifikationen, das ist dann vielleicht etwas eindeutiger. Und die Specs zu schreiben ist, wie ich finde, auch sehr viel einfacher, aussagekräftiger und vor allem lesbarer.
 

darekkay

Bekanntes Mitglied
Ja gut, das ist schon richtig. Aber naja, was sollen Anfänger auch mit Integrationstests?

Siehe dieser Thread ;)
Gerade als Anfänger gibt es meist gar keine Schichten-Trennung: da gibt's die MainView-Klasse, die DB-Aufrufe macht etc. Und wenn man dort etwas testen möchte, wird es automatisch ein Integrationstest - obwohl man "nur eine Methode testet".
 

faetzminator

Gesperrter Benutzer
Es ist aber ganz klar, wo mit JUnit die Grenzen liegen. Man kann keine Abhängigkeiten zwischen den Test haben, auch keine Reihenfolge definieren. Dann gibts noch die 2 @Before... und die anderen bekannten Annotationen. Nicht mehr und nicht weniger.
 
M

maki

Gast
Ja gut, das ist schon richtig. Aber naja, was sollen Anfänger auch mit Integrationstests?
Eben, behaupte mal der Großteil der Anfänger schreibt Integrationstests ohne es zu wissen (DAO werden mit DB getestet, Systemgrenzen wie zB. zum Dateissystem werden überschritten) und kommt dann zur falschen Einsicht "Unittests sind komplex", von Mockobjekten haben die meisten dann noch nix gehört um Abhängigkeiten zu ersetzten.

Ich habe hier in der Arbeit mindestens 2 mal pro Woche eine Diskussion mit Entwicklern über ihre "Tests", jedesmal dasselbe, "meine JUnittests ...." ist so eine Aussage, die nix aussagt, meine Frage dann: "Unit- oder Integrationstests?", Antwort: "mit JUnit halt..."

Es ist aber ganz klar, wo mit JUnit die Grenzen liegen. Man kann keine Abhängigkeiten zwischen den Test haben, auch keine Reihenfolge definieren. Dann gibts noch die 2 @Before... und die anderen bekannten Annotationen. Nicht mehr und nicht weniger.
Sehe ich nicht so, JUnit macht gar keine Einschränkungen, man kann ja seine statische Testsuite definieren inkl. Tests und deren Reihenfolge.

Man kann also auch Abhängigkeiten zwischen Tests damit festlegen (ist aber schon ein Fehler an sich in Unittests, oft auch in Integrationstests), JUnit eignet sich für Unit- und Integrationstests gleichermassen IMHO, sehe da keine Einschränkung von JUnit.
 
Zuletzt bearbeitet von einem Moderator:

faetzminator

Gesperrter Benutzer
Ich habe hier in der Arbeit mindestens 2 mal pro Woche eine Diskussion mit Entwicklern über ihre "Tests", jedesmal dasselbe, "meine JUnittests ...." ist so eine Aussage, die nix aussagt, meine Frage dann: "Unit- oder Integrationstests?", Antwort: "mit JUnit halt..."
Kenn ich, kenn ich.



Sehe ich nicht so, JUnit macht gar keine Einschränkungen, man kann ja seine statische Testsuite definieren inkl. Tests und deren Reihenfolge.
Das wär dann einfach auf Klassenebene? Hab anno dazumal eine Suite geschrieben, aber seit Maven-Builds mit Jenkins und Sonar nie wieder benötigt :)
 
M

maki

Gast
Ja, sozusagen auf Klassenebene..

Meine Testsuites werden auch dynamisch von Surefire zusammengestellt :)
 

Thaitanium

Mitglied
Schön dass ich hier so eine rege "diskussion" entfachen konnte. :D
Ich werde dann meine Tests jetzt bischen umbasteln und mit TestNG arbeiten.
Damit würde ich ja auch relativ schnell Reports erzeugen können oder!? ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W junit.Test not accessible? Java Basics - Anfänger-Themen 4
6 Best Practice Feedback zu Service / JUnit Tests Java Basics - Anfänger-Themen 3
M Anfängerfehler - Tests JUnit IntelliJ Java Basics - Anfänger-Themen 24
D Cannot find JUnit.framework Java Basics - Anfänger-Themen 1
W Junit-Test (Java) Java Basics - Anfänger-Themen 4
W Testfälle bei Java ( Junit-Test) Java Basics - Anfänger-Themen 3
U JUnit testen auf SomeException Java Basics - Anfänger-Themen 5
U jUnit 5 Test für eine addMethode Java Basics - Anfänger-Themen 18
A JUnit testing is inkonsistent Java Basics - Anfänger-Themen 12
A Junit Test für MysqlDataSource JDBC Java Basics - Anfänger-Themen 3
A Test Junit Java Basics - Anfänger-Themen 1
H Junit test Java Basics - Anfänger-Themen 12
P Methoden JUnit 4 - Test Java Basics - Anfänger-Themen 6
P Probleme mit JUnit-Tests, es kommt was anderes raus als bei manuellen Tests Java Basics - Anfänger-Themen 5
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
W JUnit Tests Java Basics - Anfänger-Themen 4
hello_autumn Klassen Anzahl sowie die Anzahl der Junit Tests ermitteln? Java Basics - Anfänger-Themen 8
B JUnit / Exceptions/ try-catch Java Basics - Anfänger-Themen 6
L JUnit tests in java Java Basics - Anfänger-Themen 5
N JUnit und private Methoden testen. Java Basics - Anfänger-Themen 9
F JUnit - Was ist mit "side effects" gemeint ? Java Basics - Anfänger-Themen 2
H JUnit in Eclipse: java.lang.NoClassDefFoundError: Java Basics - Anfänger-Themen 9
B JUnit Test erstellen Java Basics - Anfänger-Themen 6
W Problem bei JUnit Test Aufgabe Java Basics - Anfänger-Themen 15
L Junit Testing bei XML? Java Basics - Anfänger-Themen 3
J LocalDateTime testen mit Junit Java Basics - Anfänger-Themen 20
W JUnit Test und HashCode Java Basics - Anfänger-Themen 14
A Objekt in Methode zurückgeben, JUnit zeigt Error Java Basics - Anfänger-Themen 2
A Kfz - Händler Klasse. JUnit-Test gibt noch Fehler an, aber finde Ursache nicht Java Basics - Anfänger-Themen 7
O JUnit - Objektreferenzen Java Basics - Anfänger-Themen 3
G Testen mit JUnit Java Basics - Anfänger-Themen 4
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
C JUnit Tests. How to Java Basics - Anfänger-Themen 5
S Junit Test Java Basics - Anfänger-Themen 2
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
L Junit Tests Java Basics - Anfänger-Themen 10
A IllegalArgumentException in JUnit testen Java Basics - Anfänger-Themen 3
V ToString-Methode mit JUnit testen(BlueJ) Java Basics - Anfänger-Themen 10
shiroX Methoden JUnit-Test einer void-Methode Java Basics - Anfänger-Themen 4
V JUnit Klassen Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
S JUnit - Swing- Anwendung wird nicht neu gestartet Java Basics - Anfänger-Themen 0
B Binäre Suche - Junit Test Java Basics - Anfänger-Themen 6
S Kommt es zu Seiteneffekten wenn man waehrend den laufenden JUnit Tests den Code aendert? Java Basics - Anfänger-Themen 2
M JUnit Testmethoden mit mehreren assert Methoden Java Basics - Anfänger-Themen 1
S Double und Gleitkommazahlen mit JUnit testen Java Basics - Anfänger-Themen 7
K JUnit: Objekte von eigenen Klassen vergleichen...geht nicht Java Basics - Anfänger-Themen 5
Z JUnit Exception Java Basics - Anfänger-Themen 2
M Verständnisfrage zu JUnit Tests und private Methoden Java Basics - Anfänger-Themen 3
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
S Unterschied .jar Datei ausführen und junit Testfall... Java Basics - Anfänger-Themen 3
M Reihenfolge von Testmethoden in JUnit beeinflussen Java Basics - Anfänger-Themen 2
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
G JUnit-Tests im Programmdurchlauf starten Java Basics - Anfänger-Themen 4
T Best Practice JUnit: Wie Klassen durch Stubs/Mockups ersetzen Java Basics - Anfänger-Themen 7
T JUnit test failed Java Basics - Anfänger-Themen 3
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
T Junit in Eclipse Java Basics - Anfänger-Themen 1
P JUnit bedeutungen Java Basics - Anfänger-Themen 3
R JUnit Test mit einer Dateistruktur als Testparameter Java Basics - Anfänger-Themen 3
shiroX OOP Array kleinste Zahl mit jUnit test Java Basics - Anfänger-Themen 3
S JUnit assertEquals funktioniert nichgt wie es sollte :( Java Basics - Anfänger-Themen 7
V Frage zu JUnit Tests Java Basics - Anfänger-Themen 3
B JUnit für JFileChooser Java Basics - Anfänger-Themen 6
S Code stimmt nicht für vorgegebenen JUnit-Test Java Basics - Anfänger-Themen 2
S File vergleich - Junit Java Basics - Anfänger-Themen 6
G Junit Java Basics - Anfänger-Themen 4
X JUnit testing Java Basics - Anfänger-Themen 7
T JUnit Suite frage Java Basics - Anfänger-Themen 6
R JUnit Test mit mehrfach ausgeführt Java Basics - Anfänger-Themen 6
S InvocationTargetException bei JUnit Testlauf Java Basics - Anfänger-Themen 2
B JUnit - Mini-Test Java Basics - Anfänger-Themen 9
T Unterschied zwischen Integrationstest und JUnit test? Java Basics - Anfänger-Themen 12
Y Junit Test - Testwert ändert sich Java Basics - Anfänger-Themen 12
T Junit --Exception testen Java Basics - Anfänger-Themen 15
A JUnit Tests in Jar-Archiv packen Java Basics - Anfänger-Themen 2
G Erste Schritte JUNIT Regressionstests automatisieren Java Basics - Anfänger-Themen 2
M JUnit - nur einzelne Methode testen? Java Basics - Anfänger-Themen 4
M JUnit - nur Failures loggen? Java Basics - Anfänger-Themen 2
S Hilfe zu Java-Programm und JUnit Test!! Java Basics - Anfänger-Themen 5
T JUNit Test IOException Java Basics - Anfänger-Themen 5
R String Replace für JUnit Java Basics - Anfänger-Themen 19
T JUNIT Nullpointerexception Java Basics - Anfänger-Themen 3
M JUNIT tests mit ant script ausführen Java Basics - Anfänger-Themen 4
S [JUnit] eigener Testsuite Runner + Ausgabe Java Basics - Anfänger-Themen 6
S [JUnit] Print Results while running Java Basics - Anfänger-Themen 6
W Mit jUnit Array testen? Java Basics - Anfänger-Themen 5
T Junit Tests Java Basics - Anfänger-Themen 7
I JUnit Datapoints für mehrere Testklassen Java Basics - Anfänger-Themen 4
Spin JUNIT Test Case - Problem bei testen Java Basics - Anfänger-Themen 2
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
M Junit tests gehen nicht Java Basics - Anfänger-Themen 2
E OOP einfache Array Aufgabe mit jUnit Java Basics - Anfänger-Themen 5
L JUNIT Testing Java Basics - Anfänger-Themen 3
C jUnit: Erfahren, ob der getestete Code eine Exception gehandelt hat Java Basics - Anfänger-Themen 3
timbeau JUnit Test Dauer speichern/loggen Java Basics - Anfänger-Themen 16
turmaline JUnit testen ob keine Exception auftritt Java Basics - Anfänger-Themen 23
D JUnit auf Matrix anwenden Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben