Hallo,
ich muss ein Programm schreiben, dass mir mit der Übergabe eines Calendar-Objekt an die Methode
[CODE lang="java" title="berechneBruttoPreis(Calendar cal)"] public double berechneBruttoPreis (Calendar cal) {
//Compare Calendar
//Jul
Calendar jul = new GregorianCalendar(2020, 6, 1);
//Dez
Calendar dez = new GregorianCalendar(2021, 0, 1);
//Nicht Ermaessigt
if (ermaessigterSteuersatz == false) {
// innerhalb Zeitraum
if (cal.after(jul) && cal.before(dez)) {
return Math.round((nettoPreis * 1.17) * 100) / 100.0;
}
// außerhalb Zeitraum
else {
return Math.round((nettoPreis * 1.19) * 100) / 100.0;
}
}
//Ermaessigt
else {
// innerhalb Zeitraum
if (cal.after(jul) && cal.before(dez)) {
return Math.round((nettoPreis * 1.05) * 100) / 100.0;
}
// außerhalb Zeitraum
else {
return Math.round((nettoPreis * 1.07) * 100) / 100.0;
}
}
}[/CODE]
übergibt und so den Preis eines Produktes mit den jeweiligen MwSt zu berechnen (je nach Datum eben 19/16% bzw 7/5%).
Beim Testen dieser Methode tritt aber nun folgendes Problem auf:
[CODE lang="java" title="JUnit4 Test Klasse"]import static org.junit.Assert.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.junit.Before;
import org.junit.Test;
public class ProduktTest {
private Produkt prod1;
private Calendar march;
@Before
public void setUp() {
//arrange
//Produkte
prod1 = new Produkt("Katzenbrunnen", false, 25.20);
//Calendar
march = new GregorianCalendar(2020, 2, 18, 13, 0);
}
@Test
public void keineReduzierteSteuer() {
//act
double erg1 = prod1.berechneBruttoPreis(march);
System.out.println(erg1);
//assert
assertEquals(29.99, erg1);
}
}[/CODE]
Der Test schlägt fehl. Das sysout hab ich mal zur Überprüfung hingeschrieben, damit ich mir auch selbst sicher bin, dass das das richtige Ergebnis ist.
Ich weiß nicht ganz genau warum der Test fehlschlägt. Es könnte sich ja mal einer anschauen (vlt Stimmt ja auch was an der Preisberechnung nicht so ganz)
Vielen Dank im voraus, egal ob wir zu einer Lösung kommen oder nicht.
Edit:
Mit "NotSame" funktioniert der Test zwar, aber das irritiert nicht etwas, da dort ja mit == verglichen wird.
Die Ergebnisse werden auch auf 2 Nachkomma gerundet. Hab auch schonmal versucht das ganze zu debuggen, jedoch finde ich dort auch nicht den Fehler.
Grüße Julian
ich muss ein Programm schreiben, dass mir mit der Übergabe eines Calendar-Objekt an die Methode
[CODE lang="java" title="berechneBruttoPreis(Calendar cal)"] public double berechneBruttoPreis (Calendar cal) {
//Compare Calendar
//Jul
Calendar jul = new GregorianCalendar(2020, 6, 1);
//Dez
Calendar dez = new GregorianCalendar(2021, 0, 1);
//Nicht Ermaessigt
if (ermaessigterSteuersatz == false) {
// innerhalb Zeitraum
if (cal.after(jul) && cal.before(dez)) {
return Math.round((nettoPreis * 1.17) * 100) / 100.0;
}
// außerhalb Zeitraum
else {
return Math.round((nettoPreis * 1.19) * 100) / 100.0;
}
}
//Ermaessigt
else {
// innerhalb Zeitraum
if (cal.after(jul) && cal.before(dez)) {
return Math.round((nettoPreis * 1.05) * 100) / 100.0;
}
// außerhalb Zeitraum
else {
return Math.round((nettoPreis * 1.07) * 100) / 100.0;
}
}
}[/CODE]
übergibt und so den Preis eines Produktes mit den jeweiligen MwSt zu berechnen (je nach Datum eben 19/16% bzw 7/5%).
Beim Testen dieser Methode tritt aber nun folgendes Problem auf:
[CODE lang="java" title="JUnit4 Test Klasse"]import static org.junit.Assert.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.junit.Before;
import org.junit.Test;
public class ProduktTest {
private Produkt prod1;
private Calendar march;
@Before
public void setUp() {
//arrange
//Produkte
prod1 = new Produkt("Katzenbrunnen", false, 25.20);
//Calendar
march = new GregorianCalendar(2020, 2, 18, 13, 0);
}
@Test
public void keineReduzierteSteuer() {
//act
double erg1 = prod1.berechneBruttoPreis(march);
System.out.println(erg1);
//assert
assertEquals(29.99, erg1);
}
}[/CODE]
Der Test schlägt fehl. Das sysout hab ich mal zur Überprüfung hingeschrieben, damit ich mir auch selbst sicher bin, dass das das richtige Ergebnis ist.
Ich weiß nicht ganz genau warum der Test fehlschlägt. Es könnte sich ja mal einer anschauen (vlt Stimmt ja auch was an der Preisberechnung nicht so ganz)
Vielen Dank im voraus, egal ob wir zu einer Lösung kommen oder nicht.
Edit:
Mit "NotSame" funktioniert der Test zwar, aber das irritiert nicht etwas, da dort ja mit == verglichen wird.
Die Ergebnisse werden auch auf 2 Nachkomma gerundet. Hab auch schonmal versucht das ganze zu debuggen, jedoch finde ich dort auch nicht den Fehler.
Grüße Julian
Zuletzt bearbeitet: