web-dev-qa-db-fra.com

java.lang.Exception: aucun test trouvé correspondant à la méthode utilisant Intellij IDEA

Je rencontre un comportement étrange d'Intellij IDEA 2016.3. Avoir une classe avec la méthode foo et un test JUnit pour la méthode lorsque je reçois Java.lang.Exception: No tests found matching Method foo lors de l'exécution du test. Après avoir exécuté mvn test, l'opération réussit, puis le test d'unité est exécuté juste après l'exécution de la commande mvn; il passe soudainement au vert. On dirait que IDEA ne se compile pas automatiquement. Comment puis-je réparer cela?

P.S. Aucun paramètre n'a été modifié après la mise à niveau vers v. 2016.3

14
Arthur Eirich

Eh bien, après avoir "joué" un peu avec les configurations d'exécution de chaque test unitaire, j'ai remarqué que chaque configuration d'exécution a un objectif Build prédéfini dans l'option Before Launch (voir l'image ci-dessous):  enter image description here

Après avoir modifié Build en Build Project, les tests se déroulent correctement.

6
Arthur Eirich

Le même problème que j'ai eu avec Gradle (4.5+) + nouveau Build Cache feature

Parfois, il est impossible de trouver de nouvelles méthodes de test et lève une exception (comme vous l'avez mentionné dans le sujet)

Solution: nettoyez les répertoires .gradle, build et out et essayez à nouveau;)

15
Evgeny Lebedev

Si vous utilisez un cadre de test théorique tel que Junit ou Robolectric , assurez-vous d'exécuter la classe contenant le test souhaité, au lieu du test lui-même. Etant donné que ces frameworks utilisent les méthodes de test comme méthodes d'instance au lieu de méthodes statiques, tout framework de test recherchant un test public static normal ne trouvera rien.

12
John Doe

Si vous exécutez à l'origine un test nommé "foo", puis le renommez "fooBar", vous devez par la suite exécuter "fooBar" avec un nouveau Run Configuration .

Si vous utilisez la même configuration d'exécution originale pour "foo" pour exécuter "fooBar", il recherche toujours un test nommé "foo" qu'il ne trouve pas (donc l'exception) car il a été renommé en "fooBar". La nouvelle configuration d'exécution rechercherait correctement le test "fooBar".

J'ai commis cette erreur sans le savoir, car j'ai renommé un test, mais je viens de cliquer sur le bouton d'exécution vert dans IntelliJ: Cette opération exécute la dernière configuration d'exécution, qui dans ce scénario porte l'ancien nom "foo".

4
cellepo

En plus des autres réponses ici: l'erreur peut également se produire lorsque vous oubliez @Test avant la déclaration de votre méthode de test. IntelliJ (2018.1) vous montrera toujours le "bouton de lecture" vert pour l'exécution du test, mais cette méthode publique dans votre classe de test ne sera pas un test réel.

1
Phil

La suppression du répertoire de sortie d'Intellij a résolu ce problème.

1
user3026571

Assurez-vous que vous avez le bon coureur mentionné ci-dessus dans votre classe.

Je recevais ce message étrange lorsque j'utilisais runner CucumberWithSerenity.class. Quand j'ai changé pour SerenityRunner.class cela a été corrigé.

@RunWith(SerenityRunner.class)
//@RunWith(CucumberWithSerenity.class)
public class WordPressAppTest {

J'utilise le framework Serenity pour l'automatisation Web et l'utilisation en dessous de la classe du coureur

import net.serenitybdd.cucumber.CucumberWithSerenity;
import net.serenitybdd.junit.runners.SerenityRunner;
import org.junit.runner.RunWith;

Je pense que IDEA (2017.2.6) peut afficher un meilleur message d'erreur que celui-ci

0
vikramvi

Peut-être que vous venez de donner un mauvais nom pour la méthode de test.

J'ai rencontré ce problème parce que j'ai utilisé '-' au lieu de '_', ce que intelliJ ne peut pas représenter.

0
Ming Arron