Test-Frist Programmierung - wie vorgehen

K

Kiel88

Gast
Guten Tag,
kurz zu mir: ich bin im Java-bereich absoluter Anfänger. Ich kann kleinere Sachen mit entsprechenden Kontrollsturukturen programmieren und kann was mit Objektorientierung und Containerklassen anfangen. Ich muss nun innerhalb von 3 Wochen für eine Hausarbeit entsprechenden Quellcode schreiben. Grundsätzlich sind die Kentnisse soweit vorhanden, dass ich die Hausarbeit programmieren könnte. Allerdings ist eine Anforderung, dass nach Test-First Programmiert wird. Unser Dozent hat dazu leider kaum was in seinen Unterlagen. Ich schaue nun gerade, dass ich mich zeitlich effizient in das Thema einarbeite und möchte meine Strategie zur Einarbeitung rückversichern bzw. Tipps einholen, wie ich den Umgang bzw. das Programmieren von entsprechenden Tests am schnellsten lerne.
Zur Erstellung der Tests will ich auf Mockito als Framework zurückgreifen. Hierzu würde ich mich entsprechender Tutorials bedienen, um die Handhabung zu erlernen. Nun heißt es auch, dass zwingend zuerst die Tests geschrieben werden und anschließend erst der Quellcode. Ich habe schon grob eine Vorstellung, welche Klassen ich (ohne Tests) brauche, damit das Programm läuft. Ich habe momentan nur noch gar keine Ahnung, wie ich das Prinzip Test-First anwende.

Wie gehe ich hier am sinnvollsten vor?
1. Variante: ich lerne den Umgang von Mockito, schreibe kleine Tests runter und weiß dadurch dann automatisch, wie ich mit Test-First vorgehe in dem Projekt?
2. Variante: Learning-by-doing. Ich setze mich direkt an Tests für das Projekt ran und programmiere Tests und dann den Quellcode und hoffe, dass ich auf die richtigen Ideen komme?

Ich habe bereits die Forensuche, die F.A.Q. und Googel bemüht. Mir fehlt gerade die richtige Strategie, um die Hausarbeit nach Test-First zu programmieren. Ich habe mir bereits einiges durchgelesen (beispielsweise solche Artikel http://www.sybit-agile.de/blog/2012/03/keine-zeit-fuer-unit-tests-test-first/, aber irgendwie fehlt mir so der Aha-Effekt. Ich hoffe, mir kann hier jemand den richtigen Weg weisen. Ich habe vom Testing bisher nur ein grobes (wenn überhaupt vorhandenes) Verständnis.
 

Saheeda

Top Contributor
Hi,

wenn du vom Testen kaum Ahnung hast, würde ich nicht direkt mit gemockten Tests einsteigen. Mocken ist das "Faken" von anderen Komponenten, um die eigentlichen Testklassen möglichst unabhängig testen zu können. Also z.B. "Angenommen, bei Anfrage x liefert die Datenbank Datensatz y. Wie reagiert mein Service?"

Für testgetriebene Entwicklung reicht auch JUnit. Das ist von der Einarbeitung her der geringste Aufwand.

Ich gehe dabei sehr kleinschrittig vor. Als ich z.B. das erste mal mit Datenbanken und SQL gearbeitet habe:
1. Besteht grundsätzlich eine Datenbankverbindung?
2. Ist meine einfache Select-Query korrekt?
3. Ist meine select query mit where-Klausel korrekt?
4. Ist die join-query richtig geschrieben?

Oder beim Taschenrechner:
1. Wird "1+1" richtig berechnet?
2. Wird "1+1/2" richtig berechnet?
3. Funktioniert "(1+2)/2+5" richtig?

Mit vielen Mini-Tests fällt es zumindest mir wesentlich einfacher, überhaupt irgendeinen Ansatz zu finden.
 

stg

Top Contributor
Oder du programmierst einfach erst mal drauf los und schreibst die Test halt hinterher .... das ist natürlich kein sauberes Vorgehen, aber wenn die Zeit bei deiner Uni-Aufgabe drückt, dann muss man halt mal ein bisschen schummeln :) *hust*
 
K

Kiel88

Gast
Ich probiere es sonst erstmal mit JUnit und arbeite mich da ein.

Sofort drauf losprogrammieren und erst dann die Tests ist etwas doof. Wir müssen alles im Gitlab hochladen und jeder Schritt muss 100% nachvollziehbar und dokumentiert sein. Wenn, dann müsste ich erst den Quellcode schreiben, die Tests schreiben, und dann alles portionsweise (erst Tests, dann den Quellcode) an verschiedenen Tagen hochladen, da sonst alles mit Durchgefallen bewertet wird ;-)
 

klauskarambulut

Bekanntes Mitglied
Mockito braucht man nicht wenn man TDD macht. Das braucht man nur, wenn man mit legacy Code (Code ohne Tests) arbeitet.

Auf JUnit kann man theoretisch auch verzichten und sich was eigenes schreiben. Es ist aber so weit verbreitet, dass der Einsatz sinnvoll ist.

Das Ziel bei TDD ist nicht, dass man Code und Testcode hat und der Testcode bestättigt, dass der Code fehlerfrei wäre.
Das Ziel ist, dass der Code den man schreibt, jedes einzelne Stück (Unit), getestet werden kann.

Das Ziel ist schönen, wartbaren, modularen Code zu bekommen.
 

Hans_G

Mitglied
Als ich mich in JUnit einarbeiten wollte, habe ich eine Weile nach geeigneten Tutorials und Büchern umgeschaut. Vieles in dem Bereich hat viel Text und wenig Inhalt. Hilfreich fand ich das Buch "Pragmatic Unit Testing in Java 8 with JUnit": https://pragprog.com/book/utj2/pragmatic-unit-testing-in-java-8-with-junit
Statt sich erst seitenlang philosophisch über Tests auszulassen, lernt man gleich zu Anfang, wie man Test schreiben und sinnvoll einsetzen kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
W Checkliste Unit Test Allgemeine Java-Themen 17
M Archunit Test Allgemeine Java-Themen 0
O Test schreiben mit Äquivalenzklassen (Aufgabe Prüfung) Allgemeine Java-Themen 9
B Junit Test Allgemeine Java-Themen 8
P Karate API Test läuft nicht durch . initializationError Allgemeine Java-Themen 21
J Junit surefire: enrich test information Allgemeine Java-Themen 0
Gaudimagspam White-Box-Test /Glas Box Test Allgemeine Java-Themen 2
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
S Test mit Werten aus der .properties Allgemeine Java-Themen 4
T Weighted QuickUnion Test Allgemeine Java-Themen 5
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
S Eclipse TestNG Default Test umbenennen Allgemeine Java-Themen 0
F UI Test auf Jenkins Allgemeine Java-Themen 1
looparda Unit Test - Abgänigkeit zur Datenbank isolieren Allgemeine Java-Themen 3
E JUnit wie Testergebnisse pro Test ("Test Report") erhalten? Allgemeine Java-Themen 1
R Test Umgebung für Datenbank erstellen, was braucht es? Allgemeine Java-Themen 14
R Unit Test Allgemeine Java-Themen 1
M JUnit Test Suites Allgemeine Java-Themen 2
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
E YQL Api Test - NullPointer Allgemeine Java-Themen 9
B JUnit4 Exception-Test Allgemeine Java-Themen 4
A eine test thread.join() frage Allgemeine Java-Themen 2
P Klassen Junit test funktioniert nicht... Allgemeine Java-Themen 11
W Frage zu Klassendesign und Test mit Mockito Allgemeine Java-Themen 5
G JUnit Test Methoden in anderen Thread verlagern Allgemeine Java-Themen 4
J JUnit, TestCase vs "einfacher" Test Allgemeine Java-Themen 3
1 JUnit Test Suit Allgemeine Java-Themen 2
B Test$1.class mit dem javac compiler Allgemeine Java-Themen 7
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
K Unit Test consolen ein-/ausgaben. Allgemeine Java-Themen 7
DEvent Test JNI Allgemeine Java-Themen 4
S Theorie hinter Shape intersects Test..? Allgemeine Java-Themen 5
fastjack jUnit und Test von equals, hashCode, toString Allgemeine Java-Themen 11
D junit - frage zu fixtures/test suites Allgemeine Java-Themen 11
G JUnit Test Allgemeine Java-Themen 5
K Test-Code in Java-Klassen verstecken (wie mit Precompiler möglich) Allgemeine Java-Themen 10
J GUI Test Allgemeine Java-Themen 4
G Implementierung vom AKS-Test Allgemeine Java-Themen 11
N ClassNotFound Exception bei JUnit Test? Allgemeine Java-Themen 2
GilbertGrape Warum schlägt JUnit-Test fehl? Allgemeine Java-Themen 19
K Bekomme JUnit TEst nicht zum laufen :( Allgemeine Java-Themen 9
G Ant: <test/> Allgemeine Java-Themen 2
F Kasiski-Test in BlueJ Allgemeine Java-Themen 4
H Java Multiplicoice Test (Part 2) Allgemeine Java-Themen 5
H Java Multiplicoice Test (10 Fragen) Allgemeine Java-Themen 11
F Test für Localization Allgemeine Java-Themen 6
B JUnit - Gleichen Test x-mal durchlaufen Allgemeine Java-Themen 2
H References to generic type Test.A<typ> should be param Allgemeine Java-Themen 5
N Performance-Test (Geschwindigkeit von Methoden vergleichen)? Allgemeine Java-Themen 4
S Performance Test mit JMeter Allgemeine Java-Themen 2
B httpunit test Allgemeine Java-Themen 6
S HTTPUnit Test Fehler: Error on HTTP request: 500 Internal Er Allgemeine Java-Themen 9
M Test eines Programmes Allgemeine Java-Themen 4
B Primzahlen test Allgemeine Java-Themen 3
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
districon Rekursion und Dynamische Programmierung Allgemeine Java-Themen 2
D Vigenere Chiffre Programmierung Allgemeine Java-Themen 5
G Thread-Programmierung Allgemeine Java-Themen 5
R Input/Output Programmierung mithilfe der Robot Bibliothek Allgemeine Java-Themen 15
MiMa Programmierung von Bibliotheksklassen Allgemeine Java-Themen 3
zhermann Grundsatzfrage zur strukturierter Programmierung Allgemeine Java-Themen 5
S Kaffemaschine Programmierung Probleme Allgemeine Java-Themen 2
P jCheckBox auf der zusammengeknüpften Programmierung anzeigen lassen Allgemeine Java-Themen 3
C Programmierung von Fotoeffekten mit Java möglich? Allgemeine Java-Themen 3
J Rekursive Programmierung-Zählen von Ziffern Allgemeine Java-Themen 5
L Designfrage: Dispatcher-Programmierung - redundante Auslegung Allgemeine Java-Themen 1
E Sonderzeichen nicht setzbar: Großes Problem bei Programmierung unter Linux Mint mit Virtual Box Allgemeine Java-Themen 5
C BlackBox-Framework - Plugin Programmierung Allgemeine Java-Themen 4
S Objekt orientierte Programmierung Allgemeine Java-Themen 7
E Socket Client-Server-Programmierung Allgemeine Java-Themen 44
M Parallele Programmierung: volatile Variable nimmt ungewöhnlichen Wert an Allgemeine Java-Themen 3
C Open Soure Projekte für parallele Programmierung Allgemeine Java-Themen 6
E Thread Programmierung Allgemeine Java-Themen 2
K Multithread Programmierung...ExecutionCompletionService Allgemeine Java-Themen 7
E objektorientierte Programmierung Allgemeine Java-Themen 3
C Hilfe bei Adressbuch-Programmierung, wie am Besten mit JList implementieren Allgemeine Java-Themen 2
J Problem mit der Thread Programmierung Allgemeine Java-Themen 2
T Fehler bei der Programmierung eines Universaldienstbrowsers Allgemeine Java-Themen 3
J 3d-Programmierung Allgemeine Java-Themen 7
S BlueJ BlueJ - Geldautomat-Programmierung Allgemeine Java-Themen 2
G Funktionale Programmierung, OO- Programmierung, ... Allgemeine Java-Themen 9
J Hardware Programmierung Allgemeine Java-Themen 3
Kr0e Atomic / Lockfree Programmierung Allgemeine Java-Themen 11
6 Java - Threads - parallele Programmierung - Tutorial Allgemeine Java-Themen 6
I parallele Programmierung mit Java Allgemeine Java-Themen 3
X Error bei der Programmierung eines Sortieralgorithmus Allgemeine Java-Themen 2
J Modul/Komponenten/Addon-Programmierung Allgemeine Java-Themen 3
ModellbahnerTT Dynamische Programmierung, komme nicht weiter.... Allgemeine Java-Themen 15
S Applet Programmierung in Eclipse Allgemeine Java-Themen 12
B Observer vs Listener (GUI-Programmierung) Allgemeine Java-Themen 5
Developer_X Batch Programmierung Allgemeine Java-Themen 4
Developer_X Datei Programmierung Allgemeine Java-Themen 18
hdi Suche nach Begriff aus der Programmierung Allgemeine Java-Themen 11
K Programmierung einer Hilfe Allgemeine Java-Themen 6
G Threads programmierung Allgemeine Java-Themen 7
F Frage zu JSP / Java Programmierung Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben