Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » JUnit Klasse findet keinen Testcase » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen JUnit Klasse findet keinen Testcase
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

JUnit Klasse findet keinen Testcase Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe folgende Klasse zur Kundenbewertung:



code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
package aufgabe18;  
public class Kundenbewertung 
{ 	public Zustand zustand; 	 	

public Kundenbewertung()
{ 		zustand= new ZustandBeobachtung(); 	} 	 	

public void korrektGezahlt()
{ 		zustand=zustand.folgezustand(new AktionPuenktlich()); 	} 	 	

public void verspaetetGezahlt()
{ 		zustand=zustand.folgezustand(new AktionUnpuenktlich()); 	} 	 	

public void nichtGezahlt()
{ 		zustand=zustand.folgezustand(new AktionNichtBezahlt()); } 	 	

public int kredit()
{ 		return zustand.kredit(); 	} 	 	

public String auskunft()
{ 		return zustand.auskunft(); 	} 	 }




Hierzu habe ich folgende Testklasse geschrieben:



code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
package aufgabe18;
 import static org.junit.Assert.*;
 import junit.framework.TestCase; 
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
 import org.junit.Test;       

public class KundenbewertungTest extends TestCase
{     private static Zustand  kritisch;     
private static Kundenbewertung kw; 	 	

@Test 	
public void verspaetetGezahlt()
 { 	kw = new Kundenbewertung();	 	
kw.verspaetetGezahlt(); 	
Zustand kritisch= new ZustandKritisch(); 	 	
assertSame(kw.zustand, kritisch); 		 	} }



Wenn ich die Testklasse als JUnit laufen lasse erhalte ich als Fehlermeldung:

No tests found in aufgabe18

Was habe ich falsch gemacht?

(Es wird ein State-Pattern in der Aufgabe verwendet)
18.12.2014 19:36 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Karlito Karlito ist männlich
Kaiser


Dabei seit: 11.04.2011
Beiträge: 1.461

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Haevelin,

assertSame prüft, ob es sich um genau das selbe Objekt handelt.
Kleine verdeutlischung: Wenn zwei Personen mit dem selben Stift schreiben, so müssen sie ihn sich teilen. Schreiben sie jedoch mit dem gleichen Stift, so sind es zwei Stifte, welche sich gleichen.

assertSame() prüft, ob zwei Variablen auf das selbe Objekt referenzieren. Um zu prüfen, ob die Objekte gleich sind, musst du assertEquals() vertwernden.

Edit: Ups, das ging an der Frage vorbei, beantwortet aber sicher eine Folgefrage...

Gruß,

Karlito
18.12.2014 22:04 Karlito ist offline E-Mail an Karlito senden Beiträge von Karlito suchen Nehmen Sie Karlito in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo Karlito,


bei der Eingabe wird ein anderer Zustand erzeugt. Wenn dieser Zustand dann Zustandkritisch ist, dann wird dennoch wenn ich mit new ein Objekt ZustandKritisch erzeuge das unterschieden von dem Objekt, welches im Programm auch ZustandKritisch ist. D.h. beide Objekte sind erzeugt von ZustandKritisch, haben aber eine unterschiedliche Referenz. Daher funktioniert assertEquals nicht. Wie kann ich zwei Objekte, die unterschiedliche Referenz haben, aber vom gleichen Typ sind, auf Gleichheit testen? Bisher habe ich:


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
package aufgabe18; 
import static org.junit.Assert.*; 
import junit.framework.TestCase;  
import org.junit.AfterClass; 
import org.junit.Before; 
import org.junit.BeforeClass; 
import org.junit.Ignore; 
import org.junit.Test;       

public class KundenbewertungTest 
{     
   private static Zustand  kritisch;     
   private static Kundenbewertung kw; 	 	

@Test 	
public void verspaetetGezahlt() 
{ 	kw = new Kundenbewertung();	 	
kw.verspaetetGezahlt(); 	// jetzt geht der Zustand von Kundenbewertung      
                                        //   ZustandKritisch
Zustand kritisch= new ZustandKritisch(); 	 	assertEquals(kritisch,kw.zustand); 		 	
     } 
}
19.12.2014 09:43 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Haevelin
Tripel-As


Dabei seit: 04.06.2013
Beiträge: 221

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Jetzt habe ich eine Lösung; die Gleichheit der Klasse wird geprüft mit:


assertEquals(kritisch.getClass(),kw.zustand.getClass());
19.12.2014 09:48 Haevelin ist offline Beiträge von Haevelin suchen Nehmen Sie Haevelin in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » JUnit Klasse findet keinen Testcase