Übung 12 (verfrüht) online

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 12 (verfrüht) online

Beitrag von Stumpf.Alex » 30. Jan 2008 10:48

Ja das ist ja klar und nicht das Problem. Mir gehts echt darum, was die von mir in der Hausübung wirklich wollen, in der es heißt für setAirport und getAirport jeweils zwei Tests zu machen?
Hausübung 12 hat geschrieben:"Schreiben Sie dazu die folgenden JUnit-Tests. In AirborneComputerTest reicht es, wenn Sie für die Methoden ... setAirplane() und getAirplane() jeweils zwei sinnvolle Abfragen..."

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Übung 12 (verfrüht) online

Beitrag von Jo(h)nny » 30. Jan 2008 11:18

es geht ja gar nicht, dass du set ohne get testest, du kannst ja auf das flügzeug nur über get methode zugreifen, also wie willst du sonst überprüfen, ob du das flugzeug richtig gesettet hast??? oder meinst du was anderes??
also 2 tests, heisst 2 abfragen(glaube ich):)
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Übung 12 (verfrüht) online

Beitrag von Jo(h)nny » 30. Jan 2008 11:22

was mich ma interessiren würde: wie könnte man 3 sinnvolle Tests für toggleAutoPilot() gestalten???? hm.... also man kann ihn ja ma einschalten, ausschalten, und dann noch ma einschalten :mrgreen:
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 12 (verfrüht) online

Beitrag von Stumpf.Alex » 30. Jan 2008 12:10

Jo(h)nny hat geschrieben:es geht ja gar nicht, dass du set ohne get testest, du kannst ja auf das flügzeug nur über get methode zugreifen, also wie willst du sonst überprüfen, ob du das flugzeug richtig gesettet hast??? oder meinst du was anderes??
also 2 tests, heisst 2 abfragen(glaube ich):)
Ganz simple, der Test für die getter Methode wäre der selbe für eine setter Methode und das finde ich total widersprüchig in der Hausübung, dass man da halt zwischen den Tests von setAirport und getAirport differenziert.
Jo(h)nny hat geschrieben:was mich ma interessiren würde: wie könnte man 3 sinnvolle Tests für toggleAutoPilot() gestalten???? hm.... also man kann ihn ja ma einschalten, ausschalten, und dann noch ma einschalten :mrgreen:
Das ist noch so ein irrer Widerspruch in der Hausübung... :?

Benutzeravatar
Jo(h)nny
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 197
Registriert: 19. Dez 2007 23:39

Re: Übung 12 (verfrüht) online

Beitrag von Jo(h)nny » 30. Jan 2008 12:21

aso, jo hab einfach kopiert, eine zeile hinzugefügt und das wars eigentlich:)

@Krümmelmonster, hab das gleiche problem bei 3, also da steht ja wir sollen alle exceptions testen. Wenn man das jetzt in einer methode schreiben müsste, kann man das irgendwie mit @Test(expected = blabla.class, blablabla.class) oder irgendwie anders, aber so dass er nach der 1. exception den code weiterdurchläuft???


hmmmmmmm......... hab keine Methoden in Airplane ausser get und set:), müssen wir den konstruktor testen???
Atomenergie ist wie Sex - im Prinzip genial, wenn man nur wüsste wohin mit den Endprodukten.

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Übung 12 (verfrüht) online

Beitrag von Krümelmonster » 30. Jan 2008 14:20

Ich habe es jetzt so gemacht, dass bei Aufgabe 2 deleteAirport() auch mit Exceptions geprüft wird und bei Aufgabe 3
zwar zwei Abfragen in einer Testmethode stehen, wobei immer nur die erste abgefragt und eine Exception wirft, wodurch
die Testmethode verlassen wird.
Schreiben Sie für jede Methode, die eine oder mehrere Exceptions erzeugen kann, einen weite-
ren Test mit je zwei Abfragen, der überprüft, ob die Exception(s) wie erwartet geworfen wird
beziehungsweise werden.
Auf welche Klassen bezieht sich diese Anweisung?
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Übung 12 (verfrüht) online

Beitrag von guido » 31. Jan 2008 10:15

Krümelmonster hat geschrieben:Ich habe es jetzt so gemacht, dass bei Aufgabe 2 deleteAirport() auch mit Exceptions geprüft wird und bei Aufgabe 3
zwar zwei Abfragen in einer Testmethode stehen, wobei immer nur die erste abgefragt und eine Exception wirft, wodurch
die Testmethode verlassen wird.
Schreiben Sie für jede Methode, die eine oder mehrere Exceptions erzeugen kann, einen weite-
ren Test mit je zwei Abfragen, der überprüft, ob die Exception(s) wie erwartet geworfen wird
beziehungsweise werden.
Auf welche Klassen bezieht sich diese Anweisung?
Auf die Klassen, die genau solche Methoden enthalten... (also potenziell fast alle)

Guido

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Übung 12 (verfrüht) online

Beitrag von Krümelmonster » 31. Jan 2008 12:03

Ok, Danke.

Ich nehme mal an, dass meine Art die Exceptions zu testen so erwünscht/akzeptiert wird.
Auch wenn dadurch der zweite Testfall, der eine Exception wirft nie erreicht wird?!
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Übung 12 (verfrüht) online

Beitrag von s!mon » 31. Jan 2008 19:25

Wie testet ihr addAirport()? Ich meine man kann ja gar nicht überprüfen, ob der die Daten so übernommen hat wie man wollte, oder? Nur ob alles "fehlerfrei" geklappt hat. Es könnte ja auch sein, dass man beim hinzufügen x und y Werte vertauscht. Sowas kann man aber gar nicht prüfen oder?

@Krümel: Ich habe das so gemacht

Code: Alles auswählen

	@Test(expected=AirplaneException.class)
	public void testSetHeightException() throws AirplaneException {
		try {
			plane.setHeight(-1000); // First illegal argument
		} catch (AirplaneException e) {
			plane.setHeight(70000000); // Second illegal argument
		}
		// JUnit should never reach this point
	}
Wenn der erste Befehl keine Exception verursacht schlägt der Test fehl, ansonsten geht er in den Catch-Block. Wenn dort eine Exception verursacht wird ist der Test bestanden, ansonsten nicht.. hatte Stumpf.Alex glaube ich auch schon mal geschrieben irgendwo.

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Übung 12 (verfrüht) online

Beitrag von Osterlaus » 31. Jan 2008 19:34

Ich füge einen hinzu und teste dann mittels meiner Funktion airportInList(airport), ob er eingefügt ist.

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Übung 12 (verfrüht) online

Beitrag von Stumpf.Alex » 31. Jan 2008 19:37

Stumpf.Alex hat geschrieben:Ja ich frage mich auch noch wie man eine setter Methode unabhängig einer getter Methode testen kann...wie z.B. bei setAirplane und getAirplane (soll ja laut Übung mit je zwei eigenen Tests geprüft werden).

Ich kann ja nur setAirplane testen, wenn ich mit getAirplane abfrage, ob das richtige Flugzeug abgespeichert wurde (aufgrund der Verkapselung kann ich ja nicht direkt auf das Flugzeugobjekt des Bordcomputers zugreifen). Aber dabei teste ich ja eher getAirplane bzw. der Test für getAirplane wäre ja das gleiche Schema, weshalb ich mich frage, wie man da jetzt die beiden Methoden, wie in der Übung erwünscht SINNVOLL differenziert testet?

Vor allem wird ja in der Übung 11 nicht verlangt, dass man Exceptions für set- und getAirplane auswirft..und da, wie von Krümelmonster genannt, ich die Aufgabe 2 genauso interpretiere, dass alle Tests mit assertEquals gemacht werden soll, frag ich mich um so mehr wie man das sinnvoll testen soll? Oder habe ich da etwas übersehen?
Ja. Dieses echt mir immer noch PARADOXE Problem (das gleiche gilt für 3 Tests der toggleAutopilot Methode) ist immer noch nicht gelöst...selbst mein Tutor konnte mir da nicht helfen und meinte, dass er das im moment genauso sinnfrei sieht. Er konnte auch nicht in die Musterlösung spicken, um sich ein Überblick zu schaffen, wie wohl die Aufgabe gemeint sein könne und was man da wohl erwartet....mom....noch nicht mal die Musterlösung ist vor erscheinen der Aufgabe da?!? wtf? :shock:

Benutzeravatar
s!mon
Computerversteher
Computerversteher
Beiträge: 373
Registriert: 20. Okt 2007 18:24
Wohnort: Höchst i. Odw

Re: Übung 12 (verfrüht) online

Beitrag von s!mon » 31. Jan 2008 20:12

Osterlaus hat geschrieben:Ich füge einen hinzu und teste dann mittels meiner Funktion airportInList(airport), ob er eingefügt ist.
So eine Funktion habe ich halt nicht. Ist das nicht irgendwie zweckentfremdet eine Methode dann zu schreiben, die man nur für die Tests braucht? Ich werde wohl einen Getter-Schreiben, der mir meine Airports einfach zurückgibt und dann mit dieser Liste arbeiten.. ist das zulässig?

Was meinen die mit "Testen Sie auch ihre eigenen Methoden"? Ich meine, meine Hilfsmethoden sind private und können ja so gar nicht getestet werden. Soll ich die nur wegen den Tests publich machen? Wäre ja denke ich nicht im Sinne der Kapselung ;)

Naja für heute die Schnauze voll, jetzt erstmal auf die Fastnacht ;)

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Übung 12 (verfrüht) online

Beitrag von Krümelmonster » 31. Jan 2008 20:31

Also ist es doch zulässig, dass try...catch Blöcke verwendet werden, denn Dr. Rößling hat
gesagt, dass @Test(expected ...) verwendet werden soll, was aber in der Lösung von s!mon auch der Fall ist.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Mojito Mix
DON'T PANIC
Beiträge: 42
Registriert: 10. Okt 2007 18:28

Re: Übung 12 (verfrüht) online

Beitrag von Mojito Mix » 2. Feb 2008 15:29

kann man dieses @Test(expected=CException.class) auch so schreiben:

@Test
public void testB() {
try{
test.B();
fail("Should have raised an CException");}
catch (CException excep){System.out.println(excep.getMessage());}
}

also mit dem fail. dieser test gib ein grünes häckchen, wenn die eine exception auftritt und wenn nicht, dann schlägt der test fehl. gehört das dann zur aufgabe Nummer 3 oder 2? Dürfen wir jetzt bei der Aufgabe 2 keine Exceptions testen, weil in Aufgabe 3 wirds ja direkt so gefordert.

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Re: Übung 12 (verfrüht) online

Beitrag von Osterlaus » 3. Feb 2008 12:57

Krümelmonster hat geschrieben:1. In Aufgabe 3 sollen wir die Exceptions der Methoden testen. Daraus schließe ich, dass wir in Aufgabe 2 die Methoden nur mit assertEquals() testen sollen. Da ich aber deleteAirport() z.B. nur über die Exception von flyTo() testen kann, wäre das ein Widerspruch. Das bringt mich zu einem allgemeineren Problem.
Ich hol das mal wieder hoch, denn ich stehe gerade vor demselben Problem. Soll die Teilaufgabe 5.2 ausschließlich per assertEquals() gelöst werden? Wenn ja: Wie? assertEquals(funktion(), Exception) schlägt mit der von Krümelmonster ja schon geposteten Fehlermeldung fehl. Für die Funktionen, die eine Exception werfen, habe ich stattdessen @Test(expected=AirplaneException.class) verwendet, obwohl 5.3 ja dann überflüssig wäre. Denn einen Großteil der Funktionen, die eine Exception werfen, habe ich in 5.2 ja schon getestet.

Antworten

Zurück zu „Archiv“