diff --git a/Shop/src/Quelle b/Shop/src/Quelle index 5d1964c..a742efa 100644 --- a/Shop/src/Quelle +++ b/Shop/src/Quelle @@ -291,4 +291,149 @@ Wenn du möchtest, erkläre ich dir auch: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> (4) -------->durch die Seite auf Before gekommen https://gist.github.com/samueltcsantos/2089ec68875f6f783a71 -https://www.geeksforgeeks.org/advance-java/before-vs-beforeclass-vs-beforeeach-vs-beforeall-in-junit/ \ No newline at end of file +https://www.geeksforgeeks.org/advance-java/before-vs-beforeclass-vs-beforeeach-vs-beforeall-in-junit/ +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> +frage: +warum ist meine Artikelliste nicht gefüllt ??? @Test + void TestProdukthinzufügen() throws FileNotFoundException { + Warenkorb warenkorb = new Warenkorb(produktListe); + warenkorb.produktHinzufügen(p1,40); + warenkorb.produktHinzufügen(p2,3); + warenkorb.produktHinzufügen(p3,500); + warenkorb.produktHinzufügen(p4,1); + warenkorb.produktHinzufügen(p5,2); + warenkorb.produktHinzufügen(p6,10); + warenkorb.produktHinzufügen(p7,5); + assertEquals(7,Artikel.size()); + + } +} + +A: +**Deine `Artikel`-Liste in der Testklasse ist eine ANDERE Liste als die im Warenkorb!** + +**Das Problem in deinem Code:** + +```java +class WarenkorbTest { + // Das ist eine SEPARATE Liste, nicht die vom Warenkorb! + ArrayList Artikel = new ArrayList<>(); + + @Test + void TestProdukthinzufügen() throws FileNotFoundException { + Warenkorb warenkorb = new Warenkorb(produktListe); + + // Diese Methoden füllen warenkorb.Artikel (nicht this.Artikel!) + warenkorb.produktHinzufügen(p1,40); + // ... + + // Hier prüfst du die FALSCHER Liste! + assertEquals(7, Artikel.size()); // this.Artikel ist immer noch leer! + } +} +``` + +**Es gibt zwei verschiedene `Artikel`-Listen:** + +1. **`warenkorb.Artikel`** - Die echte Liste im Warenkorb (wird gefüllt) +2. **`this.Artikel`** - Deine Test-Feld-Liste (bleibt leer) + +**Lösung 1: Teste die richtige Liste:** +```java +@Test +void TestProdukthinzufügen() throws FileNotFoundException { + Warenkorb warenkorb = new Warenkorb(produktListe); + + warenkorb.produktHinzufügen(p1,40); + warenkorb.produktHinzufügen(p2,3); + warenkorb.produktHinzufügen(p3,500); + warenkorb.produktHinzufügen(p4,1); + warenkorb.produktHinzufügen(p5,2); + warenkorb.produktHinzufügen(p6,10); + warenkorb.produktHinzufügen(p7,5); + + // RICHTIG: Die Liste aus dem Warenkorb holen! + assertEquals(7, warenkorb.ÜbertrageArtikel().size()); +} +``` + +**Lösung 2: Entferne die falsche Artikel-Liste komplett:** +```java +class WarenkorbTest { + // ENTFERNEN DIESE ZEILE: + // ArrayList Artikel = new ArrayList<>(); + + // Nur diese behalten: + ArrayList produktListe = new ArrayList<>(); + + @Test + void TestProdukthinzufügen() throws FileNotFoundException { + // ... dein Testcode + assertEquals(7, warenkorb.ÜbertrageArtikel().size()); // ✓ + } +} +``` + +**Debug-Code um es zu sehen:** +```java +@Test +void TestProdukthinzufügen() throws FileNotFoundException { + Warenkorb warenkorb = new Warenkorb(produktListe); + + System.out.println("Vorher - warenkorb Artikel: " + warenkorb.ÜbertrageArtikel().size()); + System.out.println("Vorher - this.Artikel: " + this.Artikel.size()); + + warenkorb.produktHinzufügen(p1,40); + + System.out.println("Nachher - warenkorb Artikel: " + warenkorb.ÜbertrageArtikel().size()); + System.out.println("Nachher - this.Artikel: " + this.Artikel.size()); + + // Ausgabe wird sein: + // Vorher - warenkorb Artikel: 0 + // Vorher - this.Artikel: 0 + // Nachher - warenkorb Artikel: 1 ← WIRD GEFÜLLT! + // Nachher - this.Artikel: 0 ← BLEIBT LEER! +} +``` + +**Warum ist `this.Artikel` leer?** +- `warenkorb.produktHinzufügen()` füllt nur `warenkorb.Artikel` +- `this.Artikel` ist eine komplett andere, unabhängige Liste +- Du hast nie etwas zu `this.Artikel` hinzugefügt + +**Richtiger Aufbau deiner Testklasse:** +```java +class WarenkorbTest { + // NUR Produkte und Produktliste + Produkt p1, p2, p3, p4, p5, p6, p7; + ArrayList produktListe; + + @BeforeEach + void setUp() { + // Produkte initialisieren + p1 = new Produkt(9, "Wasser", 0.25, 0.7, 19, 50); + // ... andere Produkte + + // Produktliste füllen + produktListe = new ArrayList<>(); + produktListe.add(p1); + // ... andere Produkte hinzufügen + + // KEINE Artikel-Liste hier! + } + + @Test + void TestProdukthinzufügen() throws FileNotFoundException { + Warenkorb warenkorb = new Warenkorb(produktListe); + + // Produkte hinzufügen + warenkorb.produktHinzufügen(p1,40); + // ... + + // Teste die RICHTIGE Liste + assertEquals(7, warenkorb.ÜbertrageArtikel().size()); + } +} +``` + +**Zusammenfassung:** Du testest die falsche Liste! Ändere `Artikel.size()` zu `warenkorb.ÜbertrageArtikel().size()` \ No newline at end of file diff --git a/Shop/src/main/java/backend/pack/Warenkorb.java b/Shop/src/main/java/backend/pack/Warenkorb.java index 89847ad..e27df56 100644 --- a/Shop/src/main/java/backend/pack/Warenkorb.java +++ b/Shop/src/main/java/backend/pack/Warenkorb.java @@ -36,8 +36,8 @@ public class Warenkorb { produkte.get(i).Bestand -= Menge; for (int j = 0; j < Artikel.size(); j++) { if (p.ID == Artikel.get(j).produkt.ID) { - Artikel.get(j).produkt.Bestand += Menge; - break; + Artikel.get(j).Menge += Menge; + return; } diff --git a/Shop/src/main/java/backend/pack/WarenkorbArtikel.java b/Shop/src/main/java/backend/pack/WarenkorbArtikel.java index 693f73d..b04518f 100644 --- a/Shop/src/main/java/backend/pack/WarenkorbArtikel.java +++ b/Shop/src/main/java/backend/pack/WarenkorbArtikel.java @@ -16,7 +16,7 @@ public class WarenkorbArtikel { public String toString() { return "Produkt: " + produkt + ", Menge: " + Menge +", Brutto-Preis insgesamt:" +neuPreis +" davon Mwst: "+ produkt.mwstSatz*Menge; //Mit KI siehe (1) } - public double berechneGesamtPreis(){ + public static double berechneGesamtPreis(){ if(Menge!=0){ neuPreis= produkt.bruttopreis*Menge ;} else diff --git a/Shop/src/test/java/pack/WarenkorbArtikelTest.java b/Shop/src/test/java/pack/WarenkorbArtikelTest.java new file mode 100644 index 0000000..5c49ac9 --- /dev/null +++ b/Shop/src/test/java/pack/WarenkorbArtikelTest.java @@ -0,0 +1,25 @@ +package pack; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class WarenkorbArtikelTest { + Produkt p1 = new Produkt(9, "Wasser", 0.25,0.7, 19,50 ); + Produkt p2 = new Produkt(10,"Bücher", 1.5, 20.99,7,9); + Produkt p3= new Produkt( 23,"1 cent Bonbon",0.001,0.01,7,1000); + Produkt p4 = new Produkt(27,"Auto",5000,25000,19,3); + Produkt p5= new Produkt(15,"Wein",0.9,5.00,19,9); + Produkt p6 = new Produkt(16,"Kaugummi",0.002,0.98,7,10); + Produkt p7= new Produkt(18,"EuroSchein",0.002,100,5,10); + WarenkorbArtikel w1= new WarenkorbArtikel(p1,2); + WarenkorbArtikel w2= new WarenkorbArtikel(p3,500); + WarenkorbArtikel w3= new WarenkorbArtikel(p4,0); + WarenkorbArtikel war; + + +}@Test +void TestBerechneGPreis(){ + // assertEquals(1.66,WarenkorbArtikel.berechneGesamtPreis(w1) ); + +} \ No newline at end of file diff --git a/Shop/src/test/java/pack/WarenkorbTest.java b/Shop/src/test/java/pack/WarenkorbTest.java index e709de1..8b45678 100644 --- a/Shop/src/test/java/pack/WarenkorbTest.java +++ b/Shop/src/test/java/pack/WarenkorbTest.java @@ -4,6 +4,7 @@ import org.junit.Before; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import java.io.FileNotFoundException; import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.*; @@ -17,11 +18,13 @@ class WarenkorbTest { Produkt p6 = new Produkt(16,"Kaugummi",0.002,0.98,7,10); Produkt p7= new Produkt(18,"EuroSchein",0.002,100,5,10); ArrayList produktListe = new ArrayList<>(); + ArrayList Artikel = new ArrayList<>(); + Warenkorb warenkorb = new Warenkorb(produktListe); - @Before - public void Listeerstellen() { //(4) + @BeforeEach + public void Listeerstellen() throws FileNotFoundException { //(4) /* for (int i = 0; i < 7; i++) { String prod = "p" + "i"; produktListe.add(prod); @@ -34,18 +37,38 @@ class WarenkorbTest { produktListe.add(p6); produktListe.add(p7); assertEquals(7,produktListe.size()); - } - @Test - void TestProdukthinzufügen() { - Warenkorb warenkorb = new Warenkorb(produktListe); - assert } + @Test - void TestaufLager(){ - assert + public void TestProdukthinzufügen() throws FileNotFoundException { + + warenkorb.produktHinzufügen(p1,40); + warenkorb.produktHinzufügen(p2,3); + warenkorb.produktHinzufügen(p3,500); + warenkorb.produktHinzufügen(p4,1); + warenkorb.produktHinzufügen(p5,2); + warenkorb.produktHinzufügen(p6,10); + warenkorb.produktHinzufügen(p7,5); + assertEquals(7,warenkorb.ÜbertrageArtikel().size()); //(5) aber nur die Zeile + } + @Test + void TestProduktDa() throws FileNotFoundException { + assertEquals(false, warenkorb.ProduktDa(p4.ID,5)); + assertEquals(true, warenkorb.ProduktDa(p3.ID,500)); + } + @Test + void welchesProdukt() throws FileNotFoundException { + assertEquals(p4, warenkorb.welchesProdukt(27)); + assertEquals(null, warenkorb.welchesProdukt(101)); + } + @Test + void aufLager() throws FileNotFoundException { + assertEquals(false, warenkorb.aufLager(p4,300)); + assertEquals(true, warenkorb.aufLager(p3,200)); + } } \ No newline at end of file