Hallo zusammen,
ich beschäftige mich seit kurzem zum allerersten Mal mit JUnit und bin leider verzweifelt. Ich habe mich mit einigen Anleitungen im I-Net beschäftigt und viel rumprobiert, trotzdem weiß ich immer noch nicht genau, wie ich zu dem folgenden Code eine passende JUnit Klasse schreiben kann/muss. Hab echt keine Ahnung mehr, wie ich da weiter vorgehen soll, wäre wirklich spitze, wenn mir wer dabei weiterhelfen könnte.
Also ich würde gerne diese Klasse hier testen. Es geht darum, dass Studenten, die mehr als 4 Semester studieren auf eine Attraktion pro Semester 1 Euro Nachlass bekommen (das ganze wird dann später noch erweitert, ist mir so aber erstmal vorgegeben).
[Java]
package file;
public class Studentenpreis extends Preis {
@Override
double getNachlass(int studiendauer) {
double result = 5;
if (studiendauer > 4) {
result -= (studiendauer - 3) * 1;
}
return result;
}
@Override
int getPreiskategorie() {
return Movie.STUDENTEN;
}
}
[/Java]
Hier nun mein Versuch einer Testklasse. Was ich mir dazu überlegt habe:
- Zunächste habe ich eine Start Methode, die die Methoden setUp(), runTest() und teardown() aufruft. Diese drei Methoden sind mir so grundsätzlich vorgegeben
- Von der Idee her habe ich mir dann gedacht, soll in der setUp() Methode erstmal alles erzeugt werden, was man zum Testen braucht, ich dachte da an eine Instanz von Studentenpreis
- Dann runTest() damit was testen. Daher übergebe ich die erzeugte Instanz.
- Dort wird wiederum die Instanz an die verschiedenen Methoden weitergegeben, hier ist es ja nur die eine
- Dort möchte ich dann ja irgendwas testen, mir ist als einzig Sinnvolles leider nur eingefallen, dass die Studiendauer nicht null sein darf.
- Danach würde in teardown() dann die Instanz gelöscht werden.
Ich habe vermutlich ziemlichen Spaghetticode produziert, da ich mir mehrere Tutorials angeschaut habe und leider jedes komplett anders vorgeht. Das unten ist daher auch eher als Pseudocode zu verstehen.
Es handelt sich um ein ganzes Programm mit einigen Klassen, ich bin bereit, mich da rein zu arbeiten, brauche aber einfach mal ein Beispiel, wie das aussehen kann. Wäre daher wirklich sehr dankbar, wenn Jemand meine Testklasse entsprechend anpassen könnte... weiß nicht weiter...
ich beschäftige mich seit kurzem zum allerersten Mal mit JUnit und bin leider verzweifelt. Ich habe mich mit einigen Anleitungen im I-Net beschäftigt und viel rumprobiert, trotzdem weiß ich immer noch nicht genau, wie ich zu dem folgenden Code eine passende JUnit Klasse schreiben kann/muss. Hab echt keine Ahnung mehr, wie ich da weiter vorgehen soll, wäre wirklich spitze, wenn mir wer dabei weiterhelfen könnte.
Also ich würde gerne diese Klasse hier testen. Es geht darum, dass Studenten, die mehr als 4 Semester studieren auf eine Attraktion pro Semester 1 Euro Nachlass bekommen (das ganze wird dann später noch erweitert, ist mir so aber erstmal vorgegeben).
[Java]
package file;
public class Studentenpreis extends Preis {
@Override
double getNachlass(int studiendauer) {
double result = 5;
if (studiendauer > 4) {
result -= (studiendauer - 3) * 1;
}
return result;
}
@Override
int getPreiskategorie() {
return Movie.STUDENTEN;
}
}
[/Java]
Hier nun mein Versuch einer Testklasse. Was ich mir dazu überlegt habe:
- Zunächste habe ich eine Start Methode, die die Methoden setUp(), runTest() und teardown() aufruft. Diese drei Methoden sind mir so grundsätzlich vorgegeben
- Von der Idee her habe ich mir dann gedacht, soll in der setUp() Methode erstmal alles erzeugt werden, was man zum Testen braucht, ich dachte da an eine Instanz von Studentenpreis
- Dann runTest() damit was testen. Daher übergebe ich die erzeugte Instanz.
- Dort wird wiederum die Instanz an die verschiedenen Methoden weitergegeben, hier ist es ja nur die eine
- Dort möchte ich dann ja irgendwas testen, mir ist als einzig Sinnvolles leider nur eingefallen, dass die Studiendauer nicht null sein darf.
- Danach würde in teardown() dann die Instanz gelöscht werden.
Ich habe vermutlich ziemlichen Spaghetticode produziert, da ich mir mehrere Tutorials angeschaut habe und leider jedes komplett anders vorgeht. Das unten ist daher auch eher als Pseudocode zu verstehen.
Es handelt sich um ein ganzes Programm mit einigen Klassen, ich bin bereit, mich da rein zu arbeiten, brauche aber einfach mal ein Beispiel, wie das aussehen kann. Wäre daher wirklich sehr dankbar, wenn Jemand meine Testklasse entsprechend anpassen könnte... weiß nicht weiter...
Java:
package test;
import junit.framework.Assert;
import junit.framework.AssertionFailedError;
import junit.framework.TestCase;
import org.junit.Test;
import junit.framework.TestResult;
import org.junit.Test;
import file.Studentenpreis;
public class StudentenpreisTest extends TestCase{
Studentenpreis studentenpreis;
@ Test
public void run (TestResult result) {
result.startTest(this);
setUp();
try {
runTest(studentenpreis);
} catch (AssertionFailedError e1) {
result.addFailure(this, e1);
} catch(Throwable e2) {
result.addError (this, e2);
} finally {
}
tearDown(studentenpreis);
}
@ Test
protected setUp() {
Studentenpreis studentenpreis = new Studentenpreis ();
return;
};
@ Test
protected void runTest() {
testGetNachlass(studentenpreis);
};
@ Test
protected void tearDown() {
};
@Test
public void testGetNachlass() {
Assert.assertTrue(!studentenpreis.equals(null));
}
}