J'utilise la version Eclipse Oxygen.3 (4.7.3). Voici ma classe de test JUnit:
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
class MyMathTest {
MyMath myMath = new MyMath();
@Before
public void before() {
System.out.println("Before");
}
@After
public void after() {
System.out.println("After");
}
@Test
public void testSum_with3numbers() {
System.out.println("Test1");
int result = myMath.sum(new int[] {1,2,3});
int expected = 6;
assertEquals(expected, result);
}
@Test
public void testSum_with1numbers() {
System.out.println("Test2");
int result = myMath.sum(new int[] {3});
int expected = 3;
assertEquals(expected, result);
}
@BeforeClass
public static void beforeClass() {
System.out.println("Before class");
}
@AfterClass
public static void afterClass() {
System.out.println("After class");
}
}
Lorsque j'exécute ce test Junit, Eclipse continue d'afficher une boîte de dialogue indiquant "Aucun test n'a été trouvé avec le lanceur de test 'JUnit 5'" . Pourquoi?
Votre classe de test est actuellement basée sur JUnit 4 car elle utilise les annotations de org.junit
paquet.
Ainsi, pour qu'il s'exécute en tant que classe de test JUnit 4 dans Eclipse, vous devez sélectionner le runner JUnit 4 dans la "Configuration de l'exécution". Cliquez sur la petite flèche (pointant vers le bas) à côté du cercle vert avec une flèche blanche à l'intérieur (en haut de l'IDE Eclipse). Là, vous devriez voir votre classe de test, et en sélectionnant cela, vous pouvez basculer entre les coureurs JUnit 4 et JUnit 5.
En revanche, si votre objectif est d'écrire un test à l'aide de JUnit Jupiter (c'est-à-dire le modèle de programmation pour JUnit 5), vous devrez passer des annotations dans org.junit
à org.junit.jupiter.api
.
Dans Eclipse 2019-09 (4.13), un bogue peut provoquer l'erreur "Aucun test trouvé avec le lanceur de test 'JUnit 5'": https://bugs.Eclipse.org/bugs/show_bug.cgi?id = 551298
J'ai ajouté la dépendance suivante à mon projet et cela a fonctionné pour moi:
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
<version>1.5.2</version><!--$NO-MVN-MAN-VER$-->
<scope>test</scope>
</dependency>
Cela m'est arrivé car ma méthode de test a été déclarée privée et JUnit n'a pas pu la détecter. Après l'avoir rendu public, cela a fonctionné comme prévu, bien sûr avec l'annotation @Test.
Vous utilisez des annotations JUnit 4 avec des dépendances JUnit 5. Si vous souhaitez utiliser JUnit 5, vous devez remplacer:
'@ Before' avec '@BeforeEach'
'@ AfterEach' avec '@AfterEach'
'@ BeforeAll' avec '@BeforeAll'
'@ AfterAll' avec '@AfterAll'
Voici plus sur les annotations JUnit 5 https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations/
Revenez sur vos importations.
Vous importez import org.junit.Test;
(Utilisé pour exécuter des cas de test avec JUnit 4)
Vous devez importer import org.junit.jupiter.api.Test;
pour exécuter le cas de dégustation avec JUnit5.
J'ai eu la même erreur, après avoir tout essayé, j'ai réalisé que la bibliothèque JUnit n'avait pas été ajoutée. Donc, après l'avoir ajouté, les tests ont fonctionné comme prévu.
la classe de test n'est pas publique, rendez-la publique et cela devrait fonctionner