it-swarm.com.de

junit: keine Tests gefunden

Ich habe ein Java-Projekt geerbt und bin neu in der Java-Entwicklung. Ich fühle mich gut mit dem Code vertraut, indem ich einige Tests schreibe. Ich schreibe meinen Code mit IntelliJ.

Mein vorhandenes Projekt hat eine Ordnerstruktur wie folgt:

/myProject
  /src
    /main
      /Java
        /com.lexcorp
          /core
            /email
              /providers
                emailProvider.Java

Ich habe ein neues Projekt erstellt, das Tests für dieses Projekt enthält. Ich möchte, dass dieses Projekt sowohl Unit- als auch Integrationstests durchführt. Derzeit hat mein neues Projekt eine Struktur wie folgt:

/myProjectTests
  /src
    /main
      /Java
        /com.lexcorp.core.email.providers
          emailProviderTest.Java

Die Datei emailProviderTest.Java sieht folgendermaßen aus:

package com.lexcorp.core.email.providers;

import junit.framework.TestCase;
import org.junit.Test;

public class EmailProviderTest extends TestCase {

    private final String username = "[testAccount]";

    private final String password = "[testPassword]";

    @Test
    public void thisAlwaysPasses() {
        assertTrue(true);
    }
}

Dieses Projekt verfügt über eine Run/Debug-Konfiguration mit den folgenden Eigenschaften:

  • Testart: Alles im Paket
  • Suche nach Tests: Im gesamten Projekt

Wenn ich diese Konfiguration ausführe, erhalte ich eine Fehlermeldung, die besagt:

junit.framework.AssertionFailedError: No tests found in com.lexcorp.core.email.providers.EmailProviderTest
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.Java:84)
    at org.junit.runners.Suite.runChild(Suite.Java:127)
    at org.junit.runners.Suite.runChild(Suite.Java:26)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.Java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.Java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.Java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.Java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.Java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.Java:309)
    at org.junit.runner.JUnitCore.run(JUnitCore.Java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.Java:74)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.Java:202)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.Java:65)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:120)

Ich verstehe nicht, warum ich eine Fehlermeldung bekomme, die auf "Keine Tests gefunden" zurückzuführen ist. Während sich meine Projektstrukturen unterscheiden, stimmen die Ordnerstrukturen auf dem Betriebssystem überein (was mich auch verwirrt). Warum erhalte ich diese Fehlermeldung und wie kann ich sie beheben? Ich danke dir sehr!

50
JQuery Mobile

Ich habe auch Fehler bekommen

junit.framework.AssertionFailedError: Keine Tests gefunden in ... 

Aber ich habe vergessen zu spezifizieren 

defaultConfig {
    ...
    testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}

Nach Synchronisierungsprojekten wurden Tests gefunden. Vielleicht hilft es jemand anderem

111
BlackRainbow

Das Erweitern von junit.framework.TestCase ist der alte Ansatz von JUnit 3 zur Implementierung von Testfällen, der nicht funktioniert, da keine Methoden mit den Buchstaben test beginnen. Da Sie JUnit 4 verwenden, deklarieren Sie einfach die Klasse als

public class EmailProviderTest {

und die Testmethode wird in der Annotation @Test gefunden.

Lesen Sie: JUnit-Verwirrung: Verwenden Sie 'Testcase erweitern' oder '@Test'.

30
Reimeus

Ich habe auch das bekommen: 

junit.framework.AssertionFailedError: Keine Tests gefunden in ...

Gelöst durch Umbenennen der Testmethode von method1

@Test
public void method1(){
    // Do some stuff...
}

zu testMethod1

@Test
public void testMethod1(){
    // Do some stuff...
}
10
lidox

wenn Sie jUnit 4 verwenden, verwenden Sie nicht erweitert TestCase .

6
user1865456

Ich hatte das gleiche Problem, in Intellij IDEA, für das Java-Framework. 

  • die von TestCase geerbte Klasse
  • Ich habe junit.framework.TestCase importiert 
  • Ich habe die Dekoration @ Test hinzugefügt

Aber ich habe eines falsch gemacht: Der Name der Methode begann nicht mit "test", sondern lautete:

@Test
public void getSomethingTest(){

und als ich es geändert habe:

@Test
public void testGetSomethingTest(){

Ich habe beschlossen: Der Executor konnte diese Methode endlich als Testmethode erkennenIch habe nichts anderes geändert.

0
RobyB

Ich hatte es bei der Verwendung des Datenanbieters und einer der Parameter hatte ein neues Zeilenzeichen wie dieses:

@DataProvider
public static Object[][] invalidAdjustment() {
    return new Object[][]{
            {"some \n text", false},
            };
}

Durch das Entfernen des \n wurde das Problem behoben

0
Andrey Marchuk

In meinem Fall brauchte ich junit4-version.jar im Klassenpfad der Aufgabe junit und auch:

ant-version.jar
ant-junit-version.jar
ant-junit4-version.jar

in der Bibliothek meiner Ameiseninstallation (/usr/share/ant/lib).

Ich habe die Fehlermeldung " junit.framework.AssertionFailedError: Es wurden keine Tests in ... " gefunden, obwohl ich ant-junit4-*version*.jar nicht am richtigen Ort hatte.

Ich habe dies korrigiert, indem ich ant-optional debian/ubuntu package installierte:

apt-get install ant-optional
0
Lincoln