Je suis donc nouveau dans JUnit et nous devons l’utiliser pour un devoir. Notre professeur nous a donné un projet comportant une classe de test, BallTest.Java
. Lorsque je clique avec le bouton droit de la souris sur> Exécuter en tant que> Test JUnit, un message d'erreur indiquant «Aucun test JUnit trouvé» s'affiche. Je sais que la question a été résolue ici ( Aucun test trouvé avec le testeur 'JUnit 4' ), mais fermer Eclipse, redémarrer, nettoyer et construire ne semble pas fonctionner. Vous trouverez ci-dessous des captures d'écran de ma configuration d'exécution, du chemin de génération et de la classe que j'essaie de tester.
BallTest.Java
import static org.junit.Assert.*;
import junit.framework.Assert;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class BallTest {
Ball ball;
/**
* @throws Java.lang.Exception
*/
@Before
public void setUp() throws Exception {
System.out.println("Setting up ...");
Point2D p = new Point2D(0,0);
ball = new Ball(p);
}
/**
* @throws Java.lang.Exception
*/
@After
public void tearDown() throws Exception {
System.out.println("Tearing down ...");
ball = null;
}
/**
* Test method for {@link Ball#getCoordinates()}.
*/
@Test
public void testGetCoordinates() {
assertNotNull(ball); // don't need Assert. because of the import statement above.
Assert.assertEquals(ball.getCoordinates().getX(), 0);
Assert.assertEquals(ball.getCoordinates().getY(), 0);
}
/**
* Test method for {@link Ball#setCoordinates(Point2D)}.
*/
@Test
public void testSetCoordinates() {
Assert.assertNotNull(ball);
Point2D p = new Point2D(99,99);
ball.setCoordinates(p);
Assert.assertEquals(ball.getCoordinates().getX(), 99);
Assert.assertEquals(ball.getCoordinates().getY(), 99);
}
/**
* Test method for {@link Ball#Ball(Point2D)}.
*/
@Test
public void testBall() {
Point2D p = new Point2D(49,30);
ball = new Ball(p);
Assert.assertNotNull(ball);
Assert.assertEquals(ball.getCoordinates().getX(), 49);
Assert.assertEquals(ball.getCoordinates().getY(), 30);
//fail("Not yet implemented");
}
public static void main (String[] args) {
Result result = JUnitCore.runClasses(BallTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Cliquez avec le bouton droit sur Projet> Propriétés> Chemin de construction Java> Ajouter le dossier Test en tant que dossier source.
Tous les dossiers source, y compris les classes de test, doivent se trouver dans le chemin de construction Java Eclipse. Pour que les sources telles que les classes principales et les classes de test puissent être compilées dans le répertoire de construction (le dossier par défaut d’Eclipse est bin).
Si aucune des autres réponses ne fonctionne pour vous, voici ce qui a fonctionné pour moi.
Redémarrer Eclipse
Le dossier source était configuré correctement et les tests unitaires étaient correctement annotés, mais le message "Aucun test JUnit trouvé" était toujours affiché pour un projet. Après un redémarrage, cela a fonctionné. J'utilisais STS 3.6.2 basé sur Eclipse Luna 4.4.1
clic droit -> chemin de construction -> supprimer du chemin de construction .__, puis ajoutez-le à nouveau -> Cliquez avec le bouton droit de la souris sur le dossier 'Test'> Chemin de construction> Utiliser comme dossier source.
J'ai eu le même problème et résolu comme ceci: J'ai supprimé l'annotation @Test et l'ai retapée.
Il semble que vous manquiez la définition du coureur sur votre classe de test, ce qui pourrait en être la cause:
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class BallTest {
...
}
Aucune solution ne fonctionnait pour moi jusqu'à ce que je modifie le nom de ma méthode de test. Quand le nom de la méthode de test commençant par "test" est OK . Je suis nouveau dans la programmation Android et ce fut pour moi une grosse surprise.
Je pense que vous avez créé vos classes de test en dehors du dossier src. Vous pouvez résoudre le problème ci-dessus de deux manières:
Ajoutez votre nom de package dans Java build path->source
Déplacez votre package/class
dans le dossier src
J'ai le même problème et résolu de cette façon, les deux solutions fonctionnent bien.
J'ai résolu le problème en configurant le chemin de génération . Faites un clic droit sur le projet (ou sur l'un des sous-dossiers) -> Chemin de construction -> Configurer le chemin de construction. Une fois que la fenêtre de propriété s'ouvre, cliquez sur l'onglet 'Source' et ajoutez vos dossiers src et tst . Mais cela seul n'a pas fonctionné pour moi. Bizarrement, je devais retaper les annotations (Projet-> nettoyer ou redémarrer aurait peut-être aussi fonctionné).
Le meilleur moyen de résoudre ce problème consiste à définir un modificateur d'accès public pour le nom de votre classe de cas de test Junit, puis à exécuter le scénario en cliquant avec le bouton droit de la souris sur votre classe de cas de test Junit et à l'exécuter comme test Junit.
junit4
nécessite que nom de classe de test soit utilisé avec Test
comme suffixe.
La solution était, après avoir fait une sauvegarde du dossier src/test, le supprimer du système de fichiers, puis le recréer.
C'est après avoir fait le conseil "Supprimer du chemin de construction" et il a vissé les dossiers lors de l'ouverture du projet dans STS 4.
La configuration d'exécution d'une classe de test peut créer une autre cause (et une solution) à ce problème.
Si vous accédez aux configurations d'exécution (ou de débogage) (à l'aide de cmd-3 ou en cliquant sur les petits boutons déroulants de la barre d'outils), vous pouvez voir une configuration créée pour chaque classe de test avec laquelle vous avez travaillé. J'ai découvert qu'une de mes classes qui ne lancerait pas avait une configuration d'exécution dans laquelle le champ Méthode de test avait été renseigné par inadvertance. Je devais effacer ça pour que ça fonctionne. Lorsque cette option est désactivée, il affiche (toutes les méthodes) en texte clair.
J'ajouterai cela étrangement - peut-être y avait-il autre chose en cours - cela ne semblait pas non plus fonctionner pour moi jusqu'à ce que je corrige le champ "Nom" également, de sorte qu'il n'inclut que le nom de la classe comme les autres configurations d'exécution JUnit.
J'utilisais @RunWith(Parameterized.class)
mais je n'ai pas pu ajouter l'annotation @Parameters
dans la méthode des paramètres statiques publics. Après avoir ajouté l'annotation, cela a fonctionné.
Je suis tombé sur ce problème lors de la mise à niveau de projets sur les versions d'Eclipse. Par exemple les junits fonctionnant bien en mars 2.0 n'ont pas fonctionné sur Neon. Ce qui suit a fonctionné pour moi.
Dans Eclipse Photon, vous devrez peut-être ajouter JUnit 4 ou 5 au chemin de génération. Cliquez avec le bouton droit de la souris sur @ Test et sélectionnez "Ajouter JUnit 4 au chemin de génération".