web-dev-qa-db-fra.com

Aucun test trouvé pour le testeur 'JUnit 4'

Mon test Java a bien fonctionné avec Eclipse. Mais maintenant, lorsque je relance le test à partir du menu Exécuter, le message suivant s'affiche: 

No tests found with test runner 'JUnit 4'

Dans le fichier .classpath, j'ai tous les fichiers jar et à la fin, j'ai: 

<classpathentry exported="true" kind="con" path="org.Eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

Comment puis-je résoudre cette erreur et relancer les tests?

95
user281070

cela m'est juste arrivé. La reconstruction ou le redémarrage d'Eclipse n'a pas aidé.

Je l'ai résolu en renommant l'une des méthodes de test pour commencer par "test ..." (style JUnit3), puis all tests sont trouvés. Je l'ai renommé comme auparavant et cela fonctionne toujours.

144
Germán

Lorsque nous obtenons ces erreurs, il semble qu'Eclipse soit confuse. Redémarrez Eclipse, actualisez le projet, nettoyez-le, laissez Eclipse le reconstruire et réessayez. La plupart du temps, cela fonctionne comme un charme.

41
JamesG

Dans le menu contextuel de votre répertoire 'test', choisissez 'Chemin de construction' -> 'Utiliser comme dossier source' . Eclipse devrait voir vos fichiers unitTests.Java comme fichiers source. se produit car il n'y a pas de fichiers unitTests.class dans votre répertoire 'build'

34
Dima

Vérifiez si votre classe de test étend "TestCase". si tel est le cas, supprimez cette clause. Votre classe n'a pas besoin d'être étendue à partir de la classe "TestCase". C'est la plupart des cas que j'ai rencontrés. 

public class MyTestCase extends TestCase{
  @Test
  public void checkSomething() {
    //...
  }
}
//Result> AssertionFailedError: No test Found in MyTestCase

Suivre TestCase devrait bien se passer.

public class MyTestCase {
  @Test
  public void checkSomething() {
    //...
  }
}
//Works fine
28
nephilim

Je faisais face au même problème et je l'ai corrigé en utilisant de mauvais exemples sur le Web et les composants internes de Junit. En gros, ne forcez pas votre classe à étendre TestCase, comme le montrent quelques exemples pour Junit 4.x. Utilisez une convention de dénomination Test ou si vous souhaitez une annotation, vous pouvez utiliser @RunWith (JUnit4.class).

Si vous avez besoin d'accéder aux méthodes d'assert, étendez Assert ou utilisez des importations statiques.

Si votre classe étend TestCase, même si vous utilisez Junit 4 Runner, il sera exécuté en tant que 3. Cela est dû au fait que le code d'initialisation détecte:

Voir JUnit3Builder et les lignes:

boolean isPre4Test(Class<?> testClass) {
    return junit.framework.TestCase.class.isAssignableFrom(testClass);
}

Cela retourne true et le test de compatibilité de junit4 ne sera pas essayé.

27
toomasr

Essayez d'ajouter 

@Test au-dessus de la méthode pour le test comme ceci

@Test
public void testParse()
{

}
5
Mike Choi

J'ai trouvé la réponse:

J'ai eu cette erreur quand j'ai exécuté le test en autonome d'Eclipse (clic droit sur la méthode et choisir de lancer le test junit), 

Lorsque j'ai exécuté la classe complète en tant que test Junit, le test a été exécuté correctement avec les paramètres.

4
Eyal Zamir

Aucun test dans JUnit4. Utilisez plutôt des annotations ou utilisez les anciennes conventions de nom JUnit3.

Exemple:

@RunWith(Suite.class)
@SuiteClasses({YourClassWithTests.class})
4
Roman C

Cela m'est arrivé aussi. J'ai essayé de redémarrer Eclipse et préfixé mes méthodes de test par des tests. Ni travaillé.

L’étape suivante a fonctionné: Changez toutes vos méthodes de test présentes dans @BeforeClass et @AfterClass en méthodes statiques.

c'est-à-dire si vous avez votre méthode de test dans le format ci-dessous:

@BeforeClass
public void testBeforeClass(){
}

puis changez le en:

@BeforeClass
public static void testBeforeClass(){
}

Cela a fonctionné pour moi.

4
revindran

Quand je fais face à ce problème, je modifie le fichier et le sauvegarde ... fonctionne comme un charme

3
Mahesh

Mon problème était que la déclaration import org.junit.Test; a disparu (ou n'a pas été ajoutée?). Après l'avoir ajoutée, j'ai dû supprimer une autre déclaration import (Eclipse vous indiquera laquelle) et tout a recommencé à fonctionner.

3
Sergii

Très tard, mais ce qui a résolu le problème pour moi, c’est que mes noms de méthode de test ont tous commencé par une majuscule: "test public nuls". Faire le t minuscule a fonctionné.

3
Josh T

J'ai essayé la solution de Germán . Cela a fonctionné pour toute la méthode de ma classe mais j'ai beaucoup de classes dans mon projet.

J'ai donc essayé de supprimer du chemin de construction, puis de le rajouter ... Cela fonctionnait parfaitement.

J'espère que ça aide.

2
Footix29

Encore une autre solution possible que je jetterai dans le ring: je n’ai pas été en mesure d’exécuter la classe de test à partir de la fenêtre de l’éditeur, ni de l’explorateur de packages, mais en cliquant avec le bouton droit sur le nom de la classe dans la vue Structure et en sélectionnant Exécuter en tant que JUnit. Le test a fonctionné ... Allez comprendre!

2
Matthew Wise

Vérifiez si le dossier dans lequel se trouvent vos tests est un dossier source. Sinon, cliquez avec le bouton droit de la souris et utilisez-le comme dossier source.

1
Todor Kolev

J'ai également rencontré le même problème lors de l'exécution du test JUnit. J'ai résolu ce problème en mettant l'annotation @Test juste au-dessus de la fonction de test principale.

1
Rajith

Peut-être que votre configuration de lancement de JUnit était destinée à une classe de test individuelle et que vous avez modifié cette configuration pour "exécuter tous les tests dans un dossier, package ou projet source"

Mais cela pourrait déclencher le message d'erreur "Aucun test trouvé avec le lanceur de tests 'JUnit 4'".

Ou vous avez apporté une modification à votre classe de test en supprimant l'annotation @Test.
Voir cette page wiki .

1
VonC

Six ans plus tard ... et il y a encore des problèmes avec Eclipse et parfois pas de trouver JUnits.

Dans mon Eclipse Mars 2, j'ai découvert qu'il ne reconnaîtrait pas les classes de test extraites de git s'il y avait plus de 9 ou 10 annotations @Test dans le fichier. Je dois commenter tous les tests supplémentaires, exécuter la classe de test, puis les décommenter et réexécuter la classe. Allez comprendre...

1
SimonB

Fermez et ouvrez le projet a fonctionné pour moi.

1
user3022123

Ce qui a réglé mon cas était similaire à la réponse de @ JamesG: j'ai redémarré Eclipse, reconstruit le projet et l'ai actualisé; MAIS avant de faire quoi que ce soit, j'ai d'abord fermé le projet (cliquez avec le bouton droit de la souris sur le projet dans le package Explorer -> Fermer le projet), puis je l'ai rouvert. Ensuite cela a fonctionné.

Solution palliative que j'ai trouvée avant de trouver la solution ultime que je viens de décrire: copiez la classe de test et exécutez-la en tant que JUnit.

1
cellepo

Faites un clic droit sur le projet -> Dépendances de construction -> supprimez celles qui ont été exclues du chemin de construction -> Cliquez sur OK

Cliquez avec le bouton droit sur Projet -> Maven -> Mettre à jour le projet.

Vous devriez être bon pour aller ..

0
MindBrain

Ce problème se posait lorsque mon nom de classe Java était similaire au nom de la classe Test. Vient de mettre à jour le nom de la classe Test par courrier en le fixant avec le travail de clé "Test" et il a commencé à fonctionner

Before: Java classe: ACMEController Classe de test: ACMEController

After: Java class: ACMEController Test class: ACMEControllerTest

0
Ravikiran763

Cela m'est arrivé aussi. J'ai découvert que dans Eclipse je n'avais pas créé de nouveau fichier de classe Java, c'est pourquoi il n'a pas été compilé. Essayez de copier votre code dans un fichier de classe Java s'il ne s'y trouve pas déjà, puis compilez-le.

0
Anna

J'ai commencé à travailler avec Selenium et Eclipse dans mon travail. Je faisais mon premier test automatisé et j'ai supprimé du code @Before, @Test et @After notes et j'avais ce problème "Aucun test trouvé avec test runner junit4" .

Ma solution était simplement d’ajouter à nouveau les notes @Avant, @Test et @After et c’est ainsi que mon script a fonctionné. Il est important de ne pas supprimer cela du code.

Ceci est un test simple qui utilise Google pour rechercher quelque chose:

import Java.util.regex.Pattern;
import Java.util.concurrent.TimeUnit;

import org.junit.*;

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;

import org.openqa.Selenium.*;
import org.openqa.Selenium.firefox.FirefoxDriver;
import org.openqa.Selenium.support.ui.Select;

public class TestingClass {

    private WebDriver driver;
    //Creates an instance of the FirefoxDriver
    **@Before**
    public void SetUp() throws Exception {
        driver = new FirefoxDriver();
    }

    **@Test**   
    //Search using keyword through Google Search
    public void TestTestClass2 () throws Exception {
        driver.get("http://www.google.com.mx/");
        driver.findElement(By.name("q")).sendKeys("Selenium");
        Thread.sleep(10000);
        driver.findElement(By.name("btnG")).click();
        Thread.sleep(10000);
    }

    //Kill all the WebDriver instances
    **@After**
    public void TearDown() throws Exception {
        driver.quit();
    }

}
0
JuanTorre

Je cours également Eclipse avec Maven (m2e 1.4). Les tests fonctionnaient avec Maven, mais pas avec Eclipse ... même après plusieurs applications de Maven>Update project.

Ma solution a été d’ajouter quelques lignes dans le fichier .classpath généré par m2e. Les lignes sont maintenant collées.

<classpathentry kind="src" output="target/test-classes" path="src/test/Java">
  <attributes>
    <attribute name="optional" value="true"/>
    <attribute name="maven.pomderived" value="true"/>
  </attributes>
</classpathentry>
0
pascal

Je devais faire un mvn clean en ligne de commande, puis project-> clean dans Eclipse. J'ai renommé la classe auparavant, puis je l'ai renommée, mais je doute que cela ait aidé.

0
joe otherside

Il y a une autre chance, vous avez peut-être changé la version inférieure de Junit Test (par exemple, Junit 3) en Junit 4 . Suivez les étapes suivantes: -

1. Right Click on class
2. Select Run as >> "Run Configurations"
3. Check your "Test Runner" option in new window
4. If it not same as maven change it for example change it as Junit 4.
0
Kundan Atre

J'ai ce problème de temps en temps. La chose qui résout le plus le problème pour moi est d’exécuter le test JUnit à partir de Exécuter les configurations ... en veillant à ce que JUnit 4 soit défini comme exécuteur de test.

En général, je vois ce problème lorsque je tente de lancer le test Exécuter en tant que ... Junit à partir du menu contextuel de l'Explorateur de packages. Si vous cliquez avec le bouton droit sur le code du test que vous essayez d'exécuter et au lieu de sélectionner Exécuter en tant que ... Test Junit, sélectionnez Exécuter les configurations ... pour vous assurer que le projet, la classe de test et le programme d'exécution de test sont correctement définis. travaille tout le temps pour moi.

0
theINtoy

J'ai découvert qu'Eclipse ne semble effectuer des tests de style JUnit 3 que si votre classe de test s'étend de TestCase. Si vous supprimez l'héritage, les annotations ont fonctionné pour moi.

Attention, vous devez importer de manière statique toutes les méthodes assert* requises telles que import static org.junit.Assert.*.

0
Martin C.

J'ai eu récemment des problèmes avec cela, qui semblent avoir été résolus dans le dernier Eclipse.

Eclipse-Java 4.11.0,2019-03:R -> 4.12.0,2019-06:R

0
rich

Votre projet Eclipse est-il basé sur Maven? Si tel est le cas, vous devrez peut-être mettre à jour la version de m2Eclipse. 

Juste un petit mot: j'ai un projet en Eclipse qui est basé sur Maven, et généré initialement à l’aide de l’assistant "nouveau projet maven" dans Eclipse. Je suis en utilisant JUnit 4.5 pour les tests unitaires, et pourrait très bien exécuter les tests à partir de la ligne de commande en utilisant maven, et tests individuels réalisés par Eclipse avec exécuter comme test JUnit .... Cependant, quand je essayé d'exécuter tous les tests dans le projet en appelant run en tant que JUnit test ... sur le noeud racine du projet, Eclipse s'est plaint "aucun test trouvé Avec test runner junit 4". Résolu par mise à niveau de m2Eclipse à la dernière version développement stable construit à partir du Site de mise à jour m2Eclipse (plus précisément, j'ai mis à jour la version 0.9.8.200905041414 vers la version 0.9.9.200907201116 dans Eclipse Galileo).

De là: http://nuin.blogspot.com/2009/07/m2Eclipse-and-junit4-no-tests-found.html

0
b.roth

Mon problème utilisait **

testng

** paquet org.testng.Assert; 

Vous pouvez le remplacer dans les bibliothèques du projet (Maven) par JUnit et ensuite avoir besoin de refactoriser le projet.
OU ajouter le plug-in TestNG Eclipse 

http://testng.org/doc/Eclipse.html

0
mohsen.nour

Utilisation de ScalaIDE (3.0.4-2.11-20140723-2253-Typesafe) Je rencontrais un problème similaire avec le menu contextuel Right Click Scala Test Class-> Run As -> Scala Junit Test.

J'ai essayé d'éditer la classe (mais pas en cas d'échec de compilation), de nettoyer, de fermer le projet, de fermer Eclipse. Aucun de ceux-ci n'a travaillé pour restaurer le menu contextuel pour les classes qui avaient auparavant bien fonctionné. Les classes de test n'utilisent pas l'annotation @Test, mais plutôt l'annotation @RunWith(classOf[JUnitRunner]) située en haut de la classe à l'aide du code ScalaTest.

Lorsque j'ai essayé de choisir Scala Junit Test directement dans l'éditeur de lancement de Run Configuration, j'ai reçu le dialogue de la question. La réponse de Footix29 a été la clé pour moi.

J'ai remarqué que même si j'avais nettoyé mon projet à quelques reprises, mes classes dans le répertoire/bin n'avaient pas encore été reconstruites.

Voici comment je suis revenu dans le menu contextuel et j'ai pu à nouveau exécuter Scala Junit Tests:

  • manually a nettoyé les classes en supprimant le /bin/<package dir>* via Explorer
  • Project -> Cleaned le projet avec une reconstruction complète

Je soupçonne qu'une édition de classe en général est capable de nettoyer un état enregistré d'Eclipse et de le remettre en marche. Dans mon cas, toutes les classes ouvrières que j’avais essayées auparavant avaient échoué et l’étape de nettoyage manual était le marteau dont j’avais besoin. Cependant, d'autres astuces qui affectent le concept Eclipse du chemin de classe/de l'état de construction devraient également fonctionner.

De plus, je pense que ce comportement a été provoqué en partie par une tentative de refactorisation d'une classe Scala en la renommant (ce à quoi Scala Eclipse IDE aspire), où tout le nettoyage après la modification initiale du fichier est manuel. Il n'y avait pas d'erreur de construction, mais il n'y avait pas non plus d'avertissements que je m'attendais à dire que quelque chose était définitivement bloqué dans les informations d'état de construction d'Eclipse.

0
n0741337

Vous pouvez résoudre ce problème en faisant comme suit:

  • Faites un clic droit sur le dossier nommé 'Test'> Chemin de la construction> Utiliser comme source Dossier
  • Ou vous pouvez définir classpath identique à: <classpathentry kind="src" path="src/test/Java"/>. Vous remplacez "src/test/Java" par votre paquet de test

Ce problème est dû au fait que junit ne peut pas reconnaître votre code source: D

0
Vu Truong