J'ai hérité d'un projet Java et suis nouveau dans le développement Java. Je me sens un bon moyen de me familiariser avec le code est d’écrire quelques tests autour de lui. J'écris mon code en utilisant IntelliJ.
Mon projet existant a une structure de dossier comme celle-ci:
/myProject
/src
/main
/Java
/com.lexcorp
/core
/email
/providers
emailProvider.Java
J'ai créé un nouveau projet qui tiendra des tests pour ce projet. Je souhaite que ce projet organise à la fois des tests unitaires et des tests d'intégration. Actuellement, mon nouveau projet a une structure comme celle-ci:
/myProjectTests
/src
/main
/Java
/com.lexcorp.core.email.providers
emailProviderTest.Java
Le fichier emailProviderTest.Java se présente comme suit:
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);
}
}
Ce projet a une configuration Run/Debug avec les propriétés suivantes:
Lorsque j'exécute cette configuration, j'obtiens une erreur qui dit:
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)
Je ne comprends pas pourquoi je reçois une erreur qui se résume à: "Aucun test trouvé". Bien que les structures de mon projet diffèrent, les structures de dossiers du système d'exploitation correspondent (ce qui est une autre source de confusion pour moi). Pourquoi ai-je cette erreur et comment puis-je la corriger? Merci beaucoup!
Je devenais trop erreur
junit.framework.AssertionFailedError: Aucun test trouvé dans ...
Mais j'ai oublié de préciser
defaultConfig {
...
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
Après les projets de synchronisation, il a trouvé des tests. Alors peut-être que ça aide quelqu'un d'autre
L'extension junit.framework.TestCase
est l'ancienne approche JUnit 3 d'implémentation de scénarios de test qui ne fonctionne pas car aucune méthode ne commence par les lettres test. Puisque vous utilisez JUnit 4, déclarez simplement la classe en tant que
public class EmailProviderTest {
et la méthode de test sera trouvée à partir de l'annotation @Test
.
Lire: JUnit confusion: utiliser 'extend Testcase' ou '@Test'?
Je devenais ça aussi:
junit.framework.AssertionFailedError: Aucun test trouvé dans ...
Résolu en renommant la méthode de test de method1
@Test
public void method1(){
// Do some stuff...
}
vers testMethod1
@Test
public void testMethod1(){
// Do some stuff...
}
si vous utilisez jUnit 4, n'utilisez pas extend TestCase , supprimez cette erreur corrigée.
J'ai eu le même problème, dans Intellij IDEA, pour le framework Java .
Mais j'ai fait une erreur: le nom de la méthode n'a pas commencé par "test" , en fait c'était:
@Test
public void getSomethingTest(){
et quand je l'ai changé en:
@Test
public void testGetSomethingTest(){
J'ai résolu: l'exécuteur a finalement pu reconnaître cette méthode comme méthode de test . Je n'ai rien changé d'autre.
Je l'ai eu lors de l'utilisation du fournisseur de données et l'un des paramètres avait un nouveau caractère de ligne, comme ceci:
@DataProvider
public static Object[][] invalidAdjustment() {
return new Object[][]{
{"some \n text", false},
};
}
Supprimer le \n
a résolu le problème
Dans mon cas, j'avais besoin de junit4-version.jar
dans le classpath de la tâche junit et aussi:
ant-version.jar
ant-junit-version.jar
ant-junit4-version.jar
à la bibliothèque de mon installation de fourmis (/usr/share/ant/lib
).
Je recevais l'erreur " junit.framework.AssertionFailedError: aucun test trouvé dans ... " alors que je n'avais pas eu ant-junit4-*version*.jar
au bon endroit.
J'ai corrigé cela en installant le paquet ant-optional debian/ubuntu:
apt-get install ant-optional