Hallo,
wir müssen ein Programm schreiben, dass überprüft, ob ein Produkt in einem bestimmten Zeitrahmen gekauft wurde und dann den Bruttopreis mit der jeweiligen Steuer berechnen und mit einer Testklasse prüfen, ob alles stimmt. An sich funktioniert meine Klasse (manuell überprüft mit den gleichen Fällen der Testklasse), jedoch habe ich wohl das mit den Testklassen nicht ganz verstanden, die spuckt nämlich zu jeder Test-Methode einen Fehler aus (AssertionError: expected.. but was...), so sieht sie aus:
[CODE lang="java" title="Testklasse"]import static org.junit.Assert.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class ProduktTest
{
Produkt produktIstErmaessigt, produktNichtErmaessigt;
Calendar untereGrenze, obereGrenze, zuFrueh, zuSpaet, mittenDrin;
@BeforeClass
public static void setUpBeforeClass() throws Exception
{
}
@AfterClass
public static void tearDownAfterClass() throws Exception
{
}
@Before
public void setUp()
{
untereGrenze = new GregorianCalendar(2020,6,01);
obereGrenze = new GregorianCalendar(2020,12,31);
zuFrueh = new GregorianCalendar(2020,5,31);
zuSpaet = new GregorianCalendar(2021,1,01);
mittenDrin = new GregorianCalendar(2020,8,15);
produktIstErmaessigt= new Produkt("Mandelmus",true, 8.5);
produktNichtErmaessigt= new Produkt("Shampoo",false, 2.50);
}
@Test
public void ermaessigtUnd2020()
{
//act
double preis1= produktIstErmaessigt.berechneBruttopreis(untereGrenze);
double preis2= produktIstErmaessigt.berechneBruttopreis(obereGrenze);
double preis3= produktIstErmaessigt.berechneBruttopreis(mittenDrin);
//assert
assertEquals(8.92,preis1,0);
assertEquals(8.92,preis2,0);
assertEquals(8.92,preis3,0);
}
@Test
public void ermaessigtUndNicht2020()
{
//act
double preis1= produktIstErmaessigt.berechneBruttopreis(zuFrueh);
double preis2= produktIstErmaessigt.berechneBruttopreis(zuSpaet);
//assert
assertEquals(9.09, preis1,0);
assertEquals(9.09,preis2,0);
}
@Test
public void nichtErmaessigtUnd2020()
{
//act
double preis1= produktNichtErmaessigt.berechneBruttopreis(untereGrenze);
double preis2= produktNichtErmaessigt.berechneBruttopreis(obereGrenze);
double preis3= produktNichtErmaessigt.berechneBruttopreis(mittenDrin);
//assert
assertEquals(2.9,preis1,0);
assertEquals(2.9,preis2,0);
assertEquals(2.9,preis3,0);
}
@Test
public void NichtErmaessigtUndNicht2020()
{
//act
double preis1= produktNichtErmaessigt.berechneBruttopreis(zuFrueh);
double preis2= produktNichtErmaessigt.berechneBruttopreis(zuSpaet);
//assert
assertEquals(2.97,preis1,0);
assertEquals(2.97,preis2,0);
}
}[/CODE]
Hier tritt bei mir aber bei jeder Methode ein Fehler auf, dass die Werte nicht übereinstimmen. Wenn ich die Werte manuell in einer Starter-Klasse abrufe, kommen allerdings die richtigen Werte raus, also liegt der Fehler vermutlich in der Testklasse, aber ich verstehe nicht ganz wo, wäre super, wenn mir da jemand helfen könnte
[CODE lang="java" title="Starterklasse"]public class Start {
public static void main(String[] args)
{
Produkt produktIstErmaessigt, produktNichtErmaessigt;
Calendar untereGrenze, obereGrenze, zuFrueh, zuSpaet, mittenDrin;
//Werte festlegen Monate werden ab 0 gezählt
untereGrenze = new GregorianCalendar(2020,5,01);
obereGrenze = new GregorianCalendar(2020,11,31);
zuFrueh = new GregorianCalendar(2020,4,31);
zuSpaet = new GregorianCalendar(2021,0,01);
mittenDrin = new GregorianCalendar(2020,7,15);
produktIstErmaessigt= new Produkt("Mandelmus",true, 8.5);
produktNichtErmaessigt= new Produkt("Shampoo",false, 2.5);
System.out.println();
System.out.println("Mandelmus: "+ produktIstErmaessigt.berechneBruttopreis(obereGrenze));
System.out.println();
System.out.println("Mandelmus: "+ produktIstErmaessigt.berechneBruttopreis(untereGrenze));
System.out.println("Shampoo: "+ produktNichtErmaessigt.berechneBruttopreis(obereGrenze));
System.out.println("Shampoo: "+ produktNichtErmaessigt.berechneBruttopreis(untereGrenze));
}
}[/CODE]
wir müssen ein Programm schreiben, dass überprüft, ob ein Produkt in einem bestimmten Zeitrahmen gekauft wurde und dann den Bruttopreis mit der jeweiligen Steuer berechnen und mit einer Testklasse prüfen, ob alles stimmt. An sich funktioniert meine Klasse (manuell überprüft mit den gleichen Fällen der Testklasse), jedoch habe ich wohl das mit den Testklassen nicht ganz verstanden, die spuckt nämlich zu jeder Test-Methode einen Fehler aus (AssertionError: expected.. but was...), so sieht sie aus:
[CODE lang="java" title="Testklasse"]import static org.junit.Assert.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class ProduktTest
{
Produkt produktIstErmaessigt, produktNichtErmaessigt;
Calendar untereGrenze, obereGrenze, zuFrueh, zuSpaet, mittenDrin;
@BeforeClass
public static void setUpBeforeClass() throws Exception
{
}
@AfterClass
public static void tearDownAfterClass() throws Exception
{
}
@Before
public void setUp()
{
untereGrenze = new GregorianCalendar(2020,6,01);
obereGrenze = new GregorianCalendar(2020,12,31);
zuFrueh = new GregorianCalendar(2020,5,31);
zuSpaet = new GregorianCalendar(2021,1,01);
mittenDrin = new GregorianCalendar(2020,8,15);
produktIstErmaessigt= new Produkt("Mandelmus",true, 8.5);
produktNichtErmaessigt= new Produkt("Shampoo",false, 2.50);
}
@Test
public void ermaessigtUnd2020()
{
//act
double preis1= produktIstErmaessigt.berechneBruttopreis(untereGrenze);
double preis2= produktIstErmaessigt.berechneBruttopreis(obereGrenze);
double preis3= produktIstErmaessigt.berechneBruttopreis(mittenDrin);
//assert
assertEquals(8.92,preis1,0);
assertEquals(8.92,preis2,0);
assertEquals(8.92,preis3,0);
}
@Test
public void ermaessigtUndNicht2020()
{
//act
double preis1= produktIstErmaessigt.berechneBruttopreis(zuFrueh);
double preis2= produktIstErmaessigt.berechneBruttopreis(zuSpaet);
//assert
assertEquals(9.09, preis1,0);
assertEquals(9.09,preis2,0);
}
@Test
public void nichtErmaessigtUnd2020()
{
//act
double preis1= produktNichtErmaessigt.berechneBruttopreis(untereGrenze);
double preis2= produktNichtErmaessigt.berechneBruttopreis(obereGrenze);
double preis3= produktNichtErmaessigt.berechneBruttopreis(mittenDrin);
//assert
assertEquals(2.9,preis1,0);
assertEquals(2.9,preis2,0);
assertEquals(2.9,preis3,0);
}
@Test
public void NichtErmaessigtUndNicht2020()
{
//act
double preis1= produktNichtErmaessigt.berechneBruttopreis(zuFrueh);
double preis2= produktNichtErmaessigt.berechneBruttopreis(zuSpaet);
//assert
assertEquals(2.97,preis1,0);
assertEquals(2.97,preis2,0);
}
}[/CODE]
Hier tritt bei mir aber bei jeder Methode ein Fehler auf, dass die Werte nicht übereinstimmen. Wenn ich die Werte manuell in einer Starter-Klasse abrufe, kommen allerdings die richtigen Werte raus, also liegt der Fehler vermutlich in der Testklasse, aber ich verstehe nicht ganz wo, wäre super, wenn mir da jemand helfen könnte
[CODE lang="java" title="Starterklasse"]public class Start {
public static void main(String[] args)
{
Produkt produktIstErmaessigt, produktNichtErmaessigt;
Calendar untereGrenze, obereGrenze, zuFrueh, zuSpaet, mittenDrin;
//Werte festlegen Monate werden ab 0 gezählt
untereGrenze = new GregorianCalendar(2020,5,01);
obereGrenze = new GregorianCalendar(2020,11,31);
zuFrueh = new GregorianCalendar(2020,4,31);
zuSpaet = new GregorianCalendar(2021,0,01);
mittenDrin = new GregorianCalendar(2020,7,15);
produktIstErmaessigt= new Produkt("Mandelmus",true, 8.5);
produktNichtErmaessigt= new Produkt("Shampoo",false, 2.5);
System.out.println();
System.out.println("Mandelmus: "+ produktIstErmaessigt.berechneBruttopreis(obereGrenze));
System.out.println();
System.out.println("Mandelmus: "+ produktIstErmaessigt.berechneBruttopreis(untereGrenze));
System.out.println("Shampoo: "+ produktNichtErmaessigt.berechneBruttopreis(obereGrenze));
System.out.println("Shampoo: "+ produktNichtErmaessigt.berechneBruttopreis(untereGrenze));
}
}[/CODE]