junit - frage zu fixtures/test suites

dermoritz

Bekanntes Mitglied
ich mache gerade meine ersten Schritte mit JUnit (ich hab schon Erfahrungen mit anderen Unit-Testsystemen) und da Frage ich mich, wie man Testfälle gruppieren kann.
Meine erste Vorstellung war, dass ein "fixture" ein fester Satz von Testfällen sein könnte. Nun war die Frage wie man ein Fixture darstellen. Mit @before hab ich das Problem das damit ja alle @Test betroffen sind. Oder kann man bestimmten "@Test" bestimmte "@Before" zuweisen - also die Testfälle Gruppieren?

Die Alternative wäre ja sich die unterschiedlichen Testsetups in Variablen abzulegen und die entsprechenden Tests auf ihre speziellen Variablen zugreifen zu lassen, aber dann brauche ich ja kein @before mehr?

Also letztendlich will ich irgend wie "data driven" testen. (in QT (c++ Framework) hat man eine "meinTest()" und eine "meinTest_data()" Funktion angelegt und so konnte man sozusagen mehrere Testgruppen anlegen inkl. Testdaten)
Geht das in JUnit mit fixtures oder ganz anders?
 

spyboot

Bekanntes Mitglied
Ich würde es an deiner Stelle mit einer TestSuite versuchen:

Unit Testing mit JUnit

diese Seite war mir persöhnlich eine große hilfe ... ziemlich am ende werden auch TestSuite's behandelt.

[Java]

public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTestSuite(CustomerTest.class);
suite.addTestSuite(EuroTest.class);
suite.addTestSuite(MovieTest.class);
return suite;
}
}


[/Java]

Ich weiß nicht ob dir dass weiterhilft???:L aber auf der Website sind auch möglichkeiten angegeben wie mann den Ablauf eines Tests steuern kann sodass mann zb. nicht immer eine Datenbank persistieren muss.
 
Zuletzt bearbeitet:

dermoritz

Bekanntes Mitglied
mit meinem beschränktem Wisen vermute ich, das die Seite sich mit junit<4 beschäftigt? Aber ich schätze der einzige Unterschied ist nun, das die Dinge nun per Annotationen "erkannt" und "gefunden" werden. also das "Reflection API nach öffentlichen Methoden, die mit test beginnen und weder Parameter noch Rückgabewert besitzen." sind nun Methoden die mit @Test markiert sind, oder?

Gibts das Buch "Testgetriebene Entwicklung mit JUnit & FIT" eigentlich ein einer neuen Auflage für JUnit4? Gibt es andere JUnit Buchempfehlungen?
 
Zuletzt bearbeitet:
M

maki

Gast
TestSuiten lässt man sich am besten dynamisch erstellen, Maven2, Ant & Eclipse können das.

@Parameters sagt dir etwas? Parameterized (JUnit API)

TestNG ist eine Erweiterung für JUnit und auch bietet die Möglichkeit, Test zu Parametriesieren bzw. Testdaten bereitzustellen.

TestSuiten statisch erstellen ist eher etwas für funktionale Tests/Systemintegrationstests, also "High level" Box Tests.

Meine erste Vorstellung war, dass ein "fixture" ein fester Satz von Testfällen sein könnte. Nun war die Frage wie man ein Fixture darstellen. Mit @before hab ich das Problem das damit ja alle @Test betroffen sind. Oder kann man bestimmten "@Test" bestimmte "@Before" zuweisen - also die Testfälle Gruppieren?
Verstehe deine Frage nicht, mit @Before annotierte Methoden werden vor jedem Testfall ausgeführt, ein testfall zur laufzeit ist eine Methode die mit @Test annotiert ist.
@BeforeClass kennst du?

Gibt es andere JUnit Buchempfehlungen?
Für Testen und passende Muster empfehle ich "XUnit Test Patterns : Refactoring Test Code", ist aber keine triviale Sache.
 

dermoritz

Bekanntes Mitglied
Danke für den Buchtip!
Was meine andere Frage betrifft: ich suche eine Möglichkeit Gruppen von Tests zu bilden. Und dann für diese Gruppen ein@before auszuführen. Z.b. Fall ich einen Überladenen Constructor habe würde ich eine Gruppe für jede Überladung basteln wollen, vor dem Ausführen der Tests jeder Gruppe würde ich den entsprechenden Construktor ausführen und dann die Gruppe.
Oft werden ja weitere Konstruktoren, Methoden eine Klasse hinzugefügt. Dann würde ich gerne den schon geschriebenen Testcode unberührt lassen und einfach eine neue Testgruppe dranhängen wollen - geht das? Die Alternative wäre eine weitere Testklasse - also für jede Gruppe eine Testklasse/ein Datei - wäre gar nicht so unsauber, aber ungewohnt oder?
 
J

JohannisderKaeufer

Gast
was spricht gegen eine private Methode createSetupA() die die Tests zu beginn aufrufen?

Oder Helper, die bestimmte setups bereitstellen und zu beginn eines Tests aufgerufen werden.
 

dermoritz

Bekanntes Mitglied
Johannis, da spricht natürlich nichts dagegen. Ich dachte nur für solche Steuerungsgeschichten gibts irgendwelche JUnit-Tags.
Hab mal noch ne Frage an Maki oder jemand der das: "TestSuiten lässt man sich am besten dynamisch erstellen, Maven2, Ant & Eclipse können das." versteht.
Was heißt hier dynamisch? Heißt das, dass diese Tools mir Testeingabedaten generieren können? Nach welchen Kriterien? Coverage?
 
M

maki

Gast
Testsuiten dynamisch erstellen heisst: Alle Tests finden, und in zufälliger bzw. beliebiger Reihenfolge ausführen. Ist etwas für isolierte Unittests, vielleciht auch Integrationstests.
Für Akzeptanstests muss man meist Suiten fest vordefinieren, da hier mehr & im Zusammenhang getestet wird.

Hast du dir schon mal TestNG angesehen? Das ist eine Erweiterung für JUnit, bin kein Fan, aber vielleciht ist es etwas für dich.

Ach ja, ohne Mocks wird jeder Test früher oder später zu einem Integrationstests, ich bevorzuge JMock2.
 

dermoritz

Bekanntes Mitglied
ohne das großartig gelesen zuhaben mal eine Zusammenfassung:
ein "native" Unterstützung von Data-Driven-Testing gibts in JUnit nicht, aber man kann sich alles selber bauen. Und dabei helfen eventuel "parameterized" Tests?

Über TestNG hab ich tatsächlich schon nachgedacht, aber da ich im Moment auf Maven setze und von Maven keine Ahnung hab, bin ich sehr dankbar das JUnit da als "convention" mit verknotet ist. Es auf TestNG umzuschulen ist mir im Moment zu aufwendig.
 

kama

Top Contributor
Hallo,

Über TestNG hab ich tatsächlich schon nachgedacht, aber da ich im Moment auf Maven setze und von Maven keine Ahnung hab, bin ich sehr dankbar das JUnit da als "convention" mit verknotet ist. Es auf TestNG umzuschulen ist mir im Moment zu aufwendig.
Wo ist das Problem denn mit TestNG und Maven ?

Gruß
Karl Heinz Marbaise
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Junit: Frage zum Ablauf Allgemeine Java-Themen 3
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
M Junit und Mocks Allgemeine Java-Themen 5
fastjack jUnit und Test von equals, hashCode, toString 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 und Mocks bei JDBC Daos Allgemeine Java-Themen 8
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: 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