# Fragen zu einem Test



## Einsteiger1233 (27. Jan 2015)

Kann mir jemand beschreiben was dieser Test macht?


```
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class MeineKlasseTest {
MeineKlasse meineKlasse1;
@Before
public void setUp() throws Exception {
meineKlasse1 = new MeineKlasse();
// Anfangs darf kein Job gesetzt sein.
assertEquals(null, meineKlasse1.getJob());
}
@After
public void tearDown() throws Exception {
meineKlasse1 = null;
}
public void testGetAndSetJob() {
meineKlasse1.setJob("Quadrat");
// Job muss 'Quadrat' sein.
assertEquals("Quadrat", meineKlasse1.getJob());
}
@Test
public void doJobs() throws Exception {
meineKlasse1.setJob("Quadrat");
// Quadrat von '4' muss '16' sein.
assertTrue(16. == meineKlasse1.myMethod(4));
meineKlasse1.setJob("Wurzel");
// Wurzel von '4' muss '2' sein.
assertTrue(2. == meineKlasse1.myMethod(4));
meineKlasse1.setJob(null);
try {
meineKlasse1.myMethod(4);
fail("Exception muss geworfen werden," +
" da kein korrekter Job gesetzt.");
} catch (Exception ex) {/* ok */
}
}
}
```



Was ist die Funktino der Klasse MeineKlasse?
Und warum macht man den try/catch Block?
Und wie könnte ein sinnvoller Programmteil im catch-Zweig aussehen?

Kann mir auch jemand den Code für MeineKlasse sagen?

Danke, und sry bin echt neu im Javabereich...  :bahnhof:


----------



## Saheeda (27. Jan 2015)

Klausuraufgabe?
Was ist denn dein Ansatz? Der Code ist durch die vielen Kommentare recht gut zu verstehen.


----------



## Einsteiger1233 (27. Jan 2015)

Ich möchte ja eigentlich nur wissen ob ich richtig liege mit meinen Antworten. Vielleicht magst du ja kurz drauf eingehen wenn du eh kommentierst. Dankeschön!!


----------



## Saheeda (27. Jan 2015)

Was wären denn deine Antworten?

Ich helf dir echt gern, aber ich mache nicht deine Aufgaben.


----------



## Einsteiger1233 (27. Jan 2015)

Zu 1.: Die Funktion der Klasse "Meine Klasse" ist, das Quadrat einer Zahl zu berechnen, bzw. die Wurzel einer Zahl zu ziehen.?

Zu 2.: Das Try-Catch Kommando umschliesst einen Codeabschnitt und wird dafür verwendet mögliche exceptions innerhalb dieses Codeabschnittes abzufangen, sodass man darauf reagieren kann?

Zu Frage 3.: Im Catch-Zweig sollte die Ausgabe erfolgen das kein korrekter Job gesetzt ist, und nicht im Try-Zweig oder?

catch (Exception ex); 
Console.WriteLine("...");
sowas in der Art hätte ich gesagt.

Die Klasse "Meine Klasse" setz ich dann noch drunter wenn ich denke sie ist vorzeigbar.... ;D


----------



## Einsteiger1233 (27. Jan 2015)

Und die Klasse dazu so?

[Java] public class MeineKlasse
{
  private String job;

  public String getJob() {
    return job;
  }

  public void setJob( String job ) {
    this.job = job;
  }

  public double myMethod( double x ) throws Exception
  {
    if( "Quadrat".equalsIgnoreCase( job ) )
      return x * x;
    if( "Wurzel".equalsIgnoreCase( job ) )
      return Math.sqrt( x );
    throw new Exception( "Fehler: Aufgabe nicht korrekt definiert." );
  }
} [/Java]


----------



## Flown (27. Jan 2015)

Probiers doch aus oder wo liegen die Probleme? Du hast die Klasse und die Tests. Also lass sie durchlaufen.

Bei konkreten Fragen helfen wir gerne.


----------



## Saheeda (28. Jan 2015)

zu 1.:
Ja. Zumindest geht das aus den Tests hervor. Man könnte jetzt spekulieren, dass auch andere Rechenoperationen möglich sind, aber dafür gibt es keine Belege.

zu 2.:
Ja.
try-catch sollte aber nicht exzessiv eingesetzt werden, sondern dort, wo es wirklich auch sinnvoll ist und so klein wie möglich.
Kompletter Murks ist z.B., den kompletten Code in einen großen try-Block einzuschließen. Finde dann mal den Fehler...

Außerdem kenne ich es so, dass man nur bestimmte Exceptions abfängt und nicht wahllos alles, um so z.B. verschiedene Exceptions unterschiedlich behandeln zu können bzw. zu merken, wenn was in die Grütze geht.
Wenn ich beispielsweise eine Datei einlese, kann FileNotFound o.ä. fliegen, bei einer MySQL-Exception habe ich irgendwo Mist gebaut.

zu 3.:
Den fail-Befehl kannte ich so noch nicht, habe aber das gefunden:
java - What's the actual use of 'fail' in JUnit test case? - Stack Overflow

Auf die Konsole schreiben, in einer Datenbank oder Datei vermerken, etc. pp.
Wichtig sind dabei der Stacktrace und die Exception selbst, sonst suchst du dich später dumm und dusselig.


zur Klasse:
Wie Flown schon sagt, ausführen und schauen, was passiert.


----------

