Problem beim erstellen eines Tests

Hallo liebes Forum und zwar will ich zu meinem Programm einen Test erstellen, [jUnit] ..weiß aber nicht ganz wie ich das machen soll...

ich werde euch jetzt nicht gen ganzen Code reinkopieren aber hier mal der Teil:

Java:
/*
 * Adding Worker
 */
@Override
public void addWorker(String firstName, String lastName, double salary){
	Worker p = new Worker(firstName,lastName,salary);
	pListe.push(p);
}

das hier soll getestet werden. ein Worker wird mit firstName lastName und salary hinzugefügt in eine pListe

Java:
	@Test
	public void testGetWorkerCount(){
		assertTrue(enterprise.getWorkerCount()==0);
		testsPassed++;
	}
	
	@Test
	public void testaddWorker(){
		assertTrue(enterprise.addWorker("James", "Bond", 30000));
		testsPassed++;
	}

das obere geht, war auch vorgegeben,
das untere ist der von mir erstellte neue test addWorker

bei assertTrue meckert er aber... kann mir jemand verraten was ich da ändern muss
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
addWorker() gibt void zurück. Was willst du dort auf true überprüfen? Du kannst zum Beispiel diese Methode aufrufen und danach testen, ob size() 1 zurückgibt. Ob get...() wieder diese Werte zurückliefert etc.
 
M

maki

Gast
bei assertTrue meckert er aber... kann mir jemand verraten was ich da ändern muss
assertTrue erwartet eine boolean, die Methode liefert aber void

testsPassed++ klingt nicht so, als ob du JUnit richtig nutzt/verstehst.

Wenn pListe (schlechter Name übrigens) durch ein Mock zu ersetzen wäre, könnte das eine Möglichkeit sein, aber Code muss bestimmte Merkmale ausweisen um testbar bzw. einfach testbar zu sein.
 
G

Gast2

Gast
die Methode addWorker hat keinen Rückgabewert. Wenn nichts von der Methode zurückgegeben wird kann man ja auch nicht auswerten ob der Ausdruck true oder false ist.

EDIT:// zu spät ;)
 

faetzminator

Gesperrter Benutzer
So was?
Java:
    @Test
    public void testaddWorker() {
        enterprise.addWorker("James", "Bond", 30000)
        assertTrue(enterprise.getWorkerCount() == 0);
        Worker worker = enterprice.getWorker(); // oder wie auch immer...
        assertEquals(worker.getFirstName(), "James");
        assertEquals(worker.getLastName(), "Bond");
        assertEquals(worker.getSalary(), 30000);
    }
 
M

maki

Gast
Wie kann ich dass dann machen, habe echt 0 plan wie das mit dem Testen gehen soll, wäre erfreut, wenn mir das jemand verraten könnte
"Verraten" klingt so als ob es ein Geheimnis wäre wie man JUnit nutzt und Tests schreibt.

Das einzige Gemheimnis ist der Code den du testen willst, addWorker bietet da nicht viel, wenn du zB. in er Lage wärest dier diese "pList" geben zu lassen, könntest du ja prüfen, ob es einen Worker gibt mit den Werten die du übergeben hattest.
 
Java:
  @Test
    public void testaddWorker() {
        enterprise.addWorker("James", "Bond", 30000);
        assertTrue(enterprise.getWorkerCount() == 0);
        Worker worker = enterprise.getWorker(); 
        assertEquals(worker.getfirstName(), "James");
        assertEquals(worker.getlastName(), "Bond");
        assertEquals(worker.getsalary(), 30000);
    }

bei getWorker();

sagt eclipse mir: The method getWorker() is undefined for the type Enterprise
 
Das Problem ist, dass ich den ganzen Code nicht ganz veröffentlichen will, da ich nicht möchte, dass mir das jemand 1:1 kopiert... hab dir deshalb ne PN geschickt, wäre nett du dir das anschaust, wenn du willst, vielleicht weißt du dann wo mein Problem besteht...danke
 

faetzminator

Gesperrter Benutzer
Wie wärs, wenn du einfach die Methode, welche dir den Worker wieder zurückgeben sollte, aufrufst? das [c]getWorker()[/c] war nur ein Beispiel / eine Idee.
 
M

maki

Gast
Wellensittich, keiner hier will deinen ganzen Code (ich eingeschlossen).
Ich mache keine Arbeit umsonst in PMs, das hier ist ein öffentliches Forum, PMs widersprechen diesem Prinzip.

Denke einfach dass dein problem ist dass du mit Unittest nix anfangen kannst und nicht wirklich weisst worum es geht, dir hilft kein Copy&Paste aus einem Forum, du brauchst die Grundlagen zum schreiben von Unittests.

Im Prinzip geht es ja nur darum, dass du irgendwie verifizieren kannst, dass der Code das macht was er soll, d.h. du brauchst eine Möglichekit zu überprüfen, ob addWorker einen neuen worker erstellt, mit den übergebenen Werten.

Ich hab ja schon geschrieben/gefragt, ob du die pList gebe lassen kannst, dann könnte der Test prüfen (und damit testen) ob der Worker hinzugefügt worden ist.
Wenn nicht, gibt es wohl keine Möglichkeit zu testen, ob addWorker wirklich macht was es soll, könntest höchstens versuchen die Größe der Liste zu überprüfen
 
Zuletzt bearbeitet von einem Moderator:
M

maki

Gast
Bevor ich noch mehr an dem letzten Post editiere, hier mal ein bisschen ungetesteter (Pseudo) Testcode:
Java:
  @Test
    public void testaddWorker() {
        final String firstName = "James";
        final String lastName = "Bond";
        final int salary = 30000;

        enterprise.addWorker(firstName, lastName, salary);

        assertEquals("worker count", 1, enterprise.getWorkerCount());

        Worker worker = enterprise.getWorkerList().get(0); 

        assertEquals("firstName", firstName, worker.getfirstName());
        assertEquals("lastName", lastName, worker.getlastName());
        assertEquals("salary", salary, worker.getsalary());
    }
 

Crian

Top Contributor
Man könnte jetzt einwenden, dass der Test zu viel testet, aber das geht wohl an der Problematik der TE vorbei.

Außerdem ist er so nicht unabhängig von der Ausführungsreihenfolge, da du das Objekt
Code:
enterprise
nicht selbst anlegst. Ist die Liste wirklich vorher leer?

Falls sich das nicht vermeiden lässt, ermittle die Größe vor dem Aufruf und danach und verwende auch einen passenden Index.
 
Zuletzt bearbeitet:
M

maki

Gast
Man könnte jetzt einwenden, dass der Test zu viel testet, aber das geht wohl an der Problematik der TE vorbei.
Das ist ein guter & richtiger Einwand, denn das Ergebnis des Tests hängt auch von der richtigen Funktionsweise der Worker Klasse ab.

Aber ohne die Möglichkeit Mocks zu verwenden wird jeder test früher oder später zu viel testen (und mutiert ganz schnell zum Integrationstests).

Außerdem ist er so nicht unabhängig von der Ausführungsreihenfolge, da du das Objekt enterprise nicht selbst anlegst. Ist die Liste wirklich vorher leer?

Falls sich das nicht vermeiden lässt, ermittle die Größe vor dem Aufruf und danach und verwende auch einen passenden Index.
Bevor man anfängt den index zu berechnen weil das Enterprise Objekt von mehreren Tests verwendet wird, sollte man lieber sicherstellen dass das Enterprise Objekt für jeden Test neu erstellt wird, "shared fixtures" sind ein Problem bei isolierten Unittests (und nciht nur da), setUp bzw. @Before bieten sich dafür an, oder im test ein neues Enterprise Objekt anlegen.
Sonst testen man nämlich auch zuviel ;)
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
R Problem beim erstellen eines neuen Klassenobjekts Java Basics - Anfänger-Themen 2
Luk10 Problem beim .jar Datei erstellen Java Basics - Anfänger-Themen 19
S Problem beim Erstellen eines Scanner-Objekts Java Basics - Anfänger-Themen 7
V Problem beim erstellen eines ausführbaren Programs Java Basics - Anfänger-Themen 5
S Problem beim JavaDoc erstellen. Java Basics - Anfänger-Themen 5
C Problem beim erstellen eines jar Archivs Java Basics - Anfänger-Themen 2
D Problem beim ausführen/erstellen von .jar Java Basics - Anfänger-Themen 6
G Problem beim erstellen einer .jar Datei Java Basics - Anfänger-Themen 9
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
E Datentypen Problem beim Speichern von enum. Java Basics - Anfänger-Themen 10
A Problem beim Deklarieren von einem BOOLEAN Java Basics - Anfänger-Themen 4
B Gleicher Prozess starten und stoppen (Problem beim Stoppen) Java Basics - Anfänger-Themen 5
DestinatioN Problem beim splitten eines Satzes in Wörter und die Wörter in Buchstaben Java Basics - Anfänger-Themen 2
B Problem beim Angeben einer Eingabe Java Basics - Anfänger-Themen 12
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
C Problem beim laden eines BufferedImage Java Basics - Anfänger-Themen 2
D Problem beim Lesen einer txt-Datei Java Basics - Anfänger-Themen 8
fLooojava Bluetooth Projekt - Problem beim mehrmaligen Senden Java Basics - Anfänger-Themen 5
E Problem beim Übergeben von Parameter an Methode Java Basics - Anfänger-Themen 2
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
F Input/Output Problem beim einlesen eines Strings Java Basics - Anfänger-Themen 3
J Problem beim auslesen von Int Wert aus YML-Datei Java Basics - Anfänger-Themen 6
P Problem beim Abschluss im Kompositum Java Basics - Anfänger-Themen 3
M Problem mit null pinterexception beim laden von Bildern Java Basics - Anfänger-Themen 20
K Problem beim Array aufruf Java Basics - Anfänger-Themen 4
J Problem beim ausführen in cmd.exe Java Basics - Anfänger-Themen 4
J Variablen Problem beim einlesen einer Zahl Java Basics - Anfänger-Themen 7
A Problem beim Compilieren Java Basics - Anfänger-Themen 11
J Problem beim Fenster Java Basics - Anfänger-Themen 4
tux20 Problem beim Schreiben von List to File Java Basics - Anfänger-Themen 2
M Problem beim Compilieren Java Basics - Anfänger-Themen 14
Maxim6394 Problem beim Abspielen von Sounds Java Basics - Anfänger-Themen 8
S Problem beim ersten compilieren überhaubt Java Basics - Anfänger-Themen 43
H Problem beim lesen des InputStreams von einem Subprozess Java Basics - Anfänger-Themen 4
L Problem beim Ausführen Java Basics - Anfänger-Themen 40
A Problem beim einfügen in eine Datenbank Java Basics - Anfänger-Themen 2
E Problem beim Programmieren eines Kartenspiels Java Basics - Anfänger-Themen 3
A Problem beim Ausführen einer .jar datei auf externen System Java Basics - Anfänger-Themen 5
M Problem beim compilieren Java Basics - Anfänger-Themen 6
JAVAnnik problem beim lvl laden Java Basics - Anfänger-Themen 15
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
JAVAnnik Problem beim Objekt bewegen Java Basics - Anfänger-Themen 20
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
S Problem beim Speichern und Laden von Daten Java Basics - Anfänger-Themen 13
B Problem beim Abspielen einer Videodatei Java Basics - Anfänger-Themen 4
W Problem beim CSV-Import Java Basics - Anfänger-Themen 5
M Datentypen Problem beim zusammenstellen eines Abfrage-Strings Java Basics - Anfänger-Themen 3
K Collections Problem beim import von Packages Java Basics - Anfänger-Themen 10
S Problem beim Kompilieren - cannot find symbol - constructor() Java Basics - Anfänger-Themen 12
B Problem beim Email versenden mit Javamail Java Basics - Anfänger-Themen 5
H Problem beim Anfang von Java (Java Editor) Java Basics - Anfänger-Themen 2
I Problem beim Schreiben eines ersten Programms Java Basics - Anfänger-Themen 3
D Problem beim Zeichnen von "Das Haus vom Nikolaus" Java Basics - Anfänger-Themen 10
D Problem beim Auslesen aus File Java Basics - Anfänger-Themen 3
A Problem beim Splitten eines Strings Java Basics - Anfänger-Themen 10
S Problem mit ObjectInputStream beim Einlesen von LinkedList Java Basics - Anfänger-Themen 3
J Problem beim Löschen von elementen aus einer ArrayList Java Basics - Anfänger-Themen 5
V Problem beim Programm laden Java Basics - Anfänger-Themen 5
H Problem beim kompilieren Java Basics - Anfänger-Themen 3
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
4 OOP Problem beim Speichern verschiedener Klassen in verschiedenen Dateien Java Basics - Anfänger-Themen 25
T Problem beim Returnwert einer Methode Java Basics - Anfänger-Themen 12
M line.separator: Problem beim Lesen einer Datei Java Basics - Anfänger-Themen 11
Miladriel Problem beim Neuzeichnen nach deiconify Java Basics - Anfänger-Themen 9
R Problem beim Ausführen von Java-PGM aus der shel Java Basics - Anfänger-Themen 3
G Problem beim Sortieren einer Liste Java Basics - Anfänger-Themen 20
M Problem beim Ereignishandling mit Menü Java Basics - Anfänger-Themen 2
H problem beim zeichen im JFrame Java Basics - Anfänger-Themen 6
F Problem beim Objekteaufruf... Java Basics - Anfänger-Themen 4
E BlockChallenge: Problem beim löschen der Blöcke Java Basics - Anfänger-Themen 3
H Problem beim Verkürzen von Programm Java Basics - Anfänger-Themen 3
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
M Problem beim Zugriff auf Daten GUI + Startklasse Java Basics - Anfänger-Themen 4
P Problem beim Thread Java Basics - Anfänger-Themen 20
0 problem beim Polygon zeichnen Java Basics - Anfänger-Themen 3
0 Problem beim Starten des Applets Java Basics - Anfänger-Themen 2
N Problem beim Durchsuchen einer LinkedList Java Basics - Anfänger-Themen 5
G Problem beim Programmieren von Blackjack Java Basics - Anfänger-Themen 15
R Problem beim Laden eines Images Java Basics - Anfänger-Themen 7
K Problem beim installieren des JDK 1.6+ version Java Basics - Anfänger-Themen 3
T Problem beim Konsolenstart Java Basics - Anfänger-Themen 5
C Problem beim Berechnen der Quadratwurzel Java Basics - Anfänger-Themen 3
C Problem beim nutzen von Teilprogrammen in main Java Basics - Anfänger-Themen 2
M Problem beim Zeichnen Java Basics - Anfänger-Themen 5
D Problem beim Kompilieren Java Basics - Anfänger-Themen 4
D Problem beim auslesen von TextArea Java Basics - Anfänger-Themen 3
G Problem beim Schreiben in Textdatei Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben