No JUnit tests found

PinkMuffin

Bekanntes Mitglied
Hallo,
ich hab gerade nochmal etwas, was wir für die Hochschule abgeben mussten überprüft und eine der Testklassen funktioniert nicht mehr. Auf meinem privaten Laptop funktioniert es, auf dem Bürorechner nicht mehr, es kommt die Meldung "No JUnit tests found".
Die Eclipse-Version ist die gleiche. Ich hab alle möglichen Sachen (Neustarten, clean, path-überprüfen) durchprobiert, ich hab sogar die @Test Annotation gelöscht und neu getippt, was anscheinend manchmal helfen soll. Die Klasse ist im source-folder, alle anderen Testklassen des Projekts haben keine Probleme und befinden sich im selben folder.
Ich hab echt keine Idee mehr, woran es liegen könnte, hier mal die Klasse, aber eigentlich funktioniert sie ja auf meinem Heimlaptop:
Java:
package portfolio;

import static org.junit.Assert.*;

import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;

@RunWith(JUnit4.class)
public class WarenkorbTest
{
    Warenkorb korbLeer, korbGefuellt, korbNull;
    Produkt produkt1,produkt2,produkt3,produkt4;
   
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    }

    @AfterClass
    public static void tearDownAfterClass() throws Exception {
    }
   
    @Before
    public void setUp()
    {  
        produkt1=new Produkt("Schnürsenkel", false, 5);
        produkt2=new Produkt("Mandelmus", true, 5);
        produkt3=new Produkt("Saft", true, 5);
        produkt4=new Produkt("Bergkäse", false, 5);
       
        korbLeer = new Warenkorb(4);
        korbGefuellt = new Warenkorb(5);
       
        korbGefuellt.artikelHinzufuegen(produkt1);
        korbGefuellt.artikelHinzufuegen(produkt2);
        korbGefuellt.artikelHinzufuegen(produkt3);
        korbGefuellt.artikelHinzufuegen(produkt4);
        korbGefuellt.artikelHinzufuegen(produkt4);  
    }
   

    @Test
    public void artikelEntfernen_nurVorhandeneArtikelEntfernt_Test()
    {
        //act
        Produkt stelle1, stelle2, stelle3, stelle4, stelle5;
        korbGefuellt.artikelEntfernen("Mandelmus");
        korbGefuellt.artikelEntfernen("Saft");
        korbGefuellt.artikelEntfernen("Bergkäse");
        stelle1 = korbGefuellt.artikelAuslesen(0);
        stelle2 = korbGefuellt.artikelAuslesen(1);
        stelle3 = korbGefuellt.artikelAuslesen(2);
        stelle4 = korbGefuellt.artikelAuslesen(3);
        stelle5 = korbGefuellt.artikelAuslesen(4);
       
        //assert
        assertEquals(produkt1, stelle1);
        assertEquals(null, stelle2);
        assertEquals(null, stelle3);
        assertEquals(null, stelle4);
        assertEquals(null, stelle5);  
    }
   
    @Test(expected= RuntimeException.class)
    public void artikelEntfernen_NichtEnthaltenesProduktEntfernt_Test()
    {
        korbGefuellt.artikelEntfernen("Hüttenkäse");
    }
   
    @Test(expected= RuntimeException.class)
    public void artikelEntfernen_ProduktAusLeeremKorbEntfernt_Test()
    {
        korbLeer.artikelEntfernen("Schnürsenkel");
    }
   
   
}

Ich hab gelesen, dass so was öfter passiert, wie kann man das verhindern? Und ist das "nur" bei Testklassen so? Ist ja schon ärgerlich, wenn alles funktioniert und der Bewerter dann lauter Fehlermeldungen bekommt.

LG
Lena
 
Das hatte ich nachträglich eingefügt, da auf Stackoverflow gesagt wurde, dass das was bringen soll. Läuft aber irgendwie weder ohne, noch mit dem RunWith 🤷‍♀️
 
Kannst du mal eine Testklasse, die wirklich im gleichen Projekt und gleichen Folder ist, hier reinkopieren (und die läuft). Insbesondere inklusive der Imports.

Nachtrag: Esotrische Lösung, die vielleicht helfen kann:
In Run->Run Configurations gehen. Dort entweder alle Test-Run Configurations löschen oder zumindest die mit der fehlerhaften Klasse. Bzw. die mit der Fehlerhaften Klasse mal ansehen, ggf. ist da als Runner ein Junit 3 oder 5 Runner eingestellt und dann kommt es zu dem Problem.

1612350183092.png
 
Da war alles richtig eingestellt, interessanterweise läuft es aber, wenn ich es über dieses Menü starte.. scheint mir tatsächlich eine esoterische Lösung zu sein ^^

Hier trotzdem noch mal eine laufende Testklasse (Einige Methoden hab ich rausgelassen, es ging ja eh eher um die Imports):
Java:
package portfolio;

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,11,31);
        zuFrueh = new GregorianCalendar(2020,5,30);
        zuSpaet = new GregorianCalendar(2021,0,01);
        mittenDrin = new GregorianCalendar(2020,8,15);

        produktIstErmaessigt= new Produkt("Mandelmus",true, 8.5);
        produktNichtErmaessigt= new Produkt("Shampoo",false, 2.50);
    }

    @Test
    public void berechneBruttopreis_ErmaessigtUnd2020()
    {
        //act
        double preis1= produktIstErmaessigt.berechneBruttopreis(mittenDrin);
        
        //assert
        assertEquals(8.92,preis1,0);
    }
}
 
Dann kann es wirklich eigentlich nur an den Run-Configurations liegen. Wir hatten das Problem bei der Umstellung Junit 4->5, dass Eclipse da teilweise der Ansicht war, die Testklassen mit Junit 4 ausführen zu wollen - und dann meckerte "No Tests found". Deswegen kam mir da in Sinn.
 

Zurück
Oben