Ne pouvait pas trouver la classe Junit-4.11
J'ai configuré Junit-4.11 sur mon Mac, compiler avec javac
a pas d'erreur, mais quand je les ai java
, j'ai eu Could not find class: HelloWorldTest
Voici mon HelloWorld.java
et HelloWorldTest.java
import java.util.*;
public class HelloWorld {
public String output() {
return "Hello world!";
}
}
import static org.junit.Assert.*;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.Test;
import java.util.*;
import org.junit.*;
public class HelloWorldTest {
public HelloWorld helloworld = new HelloWorld();
@BeforeClass
public static void oneTimeSetUp() {
System.out.println("@BeforeClass - oneTimeSetUp");
}
@AfterClass
public static void oneTimeTearDown() {
System.out.println("@AfterClass - oneTimeTearDown");
}
@Before
public void setUp() {
System.out.println("@Before - setUp");
}
@After
public void tearDown() {
System.out.println("@After - tearDown");
}
@Test
public void testOutput() {
assertEquals(helloworld.output(), "Hello world!");
System.out.println("@Test - testOutput");
}
}
Et je les ai
javac -classpath ./HelloWorldTest.java
et java -classpath ./org.junit.runner.JUnitCore HelloWorldTest
Ce que j'ai obtenu est
JUnit version 4.11
Could not find class: HelloWorldTest
Time: 0.002
OK (0 tests)
J'ai mis junit-4.11.jar
dans le répertoire courant avec HelloWorld.java
et HelloWorldTest.java
, j'ai aussi mis dans /Library/Java/Extensions
Ce que j'ai essayé de le résoudre est de mettre en JAVA_HOME
et CLASSPATH
, mais il n'a pas de travail.
Quelqu'un pourrait-il point de ce qui n'allait pas? J'étais vraiment confus.
Merci.
Eh bien, j'ai résolu mon problème avec les étapes suivantes. Mon Mac est Mac OSX 10.8 et j'ai utilisé de la JVM-1.6 fourni par Apple. Vous pouvez le télécharger en cliquant sur ici.
- Supprimer la
CLASSPATH
dans mon.zshrc
fichier(Si vous utilisezBash
je pense que c'est.bashrc
) - Supprimer la
JUnit-4.11.jar
(ou toute version que vous utilisez) dans le/Library/Java/Extensions
et de tout Système de Répertoire que vous mettez dans. - Essayez de compiler à nouveau et l'exécuter.
Et j'ai mis JAVA_HOME
comme /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
Merci.
Envisager l'utilisation de Maven ou Gradle pour vos constructions.
désolé, ma faute, j'ai corrigé. @HimanshuBhardwaj
Merci pour votre question, j'ai réussi à résoudre mon problème, mais une chose que je ne comprends pas c'est que pourquoi devons-nous nous associer la hamcrest bibliothèques dans les tests?
OriginalL'auteur lpy | 2013-07-01
Vous devez vous connecter pour publier un commentaire.
Mise à jour: L'affiche originale de la solution est enterré dans un commentaire ci-dessous. Il a à voir avec ne pas avoir la junit fichiers jar dans
/Library/Java/Extensions
, et de ne pas avoir unCLASSPATH
:Dans un temp dir (fichiers java à partir de votre question):
Alors:
javac -cp junit-4.11.jar *.java
java -cp junit-4.11.jar:hamcrest-core-1.3.jar:. org.junit.runner.JUnitCore HelloWorldTest
De sortie:
Je vous conseille de réessayer à partir de zéro
Vérifiez si les deux .java ont compilé .classe, vérifier votre version de java
Merci, à la fois .java ont compilé .de la classe, et la version de java est 1.7.0_25
Encore une "marche pour moi" sur OSX 10.8.4 / java 1.6.0_51. Vous devriez essayer avec apple fourni JVM (i.e. 1.6)
J'ai trouvé la différence. J'ai supprimé
CLASSPATH
dans mon.zshrc
fichier, et j'ai aussi suppriméjunit-4.11.jar
dans/Library/Java/Extensions
et/Library/Java/Home/lib/ext
, puisJUnit-4.11
travaillé. Merci pour votre aide encore une fois. Je vais mettre à jour mon problème.OriginalL'auteur
Ok, j'ai testé la même. Fournira les étapes pour la même chose:
Premier processus HelloWorld.java:
Ce résultat HelloWorld.class dans le même dossier.
Prochain processus HelloWorldTest.java:
Ce résultat HelloWorldTest.class dans le même dossier.
Est le dossier contenant HelloWorldTest.class fichier après exécution de la commande javac pour HelloWorldTest.java
Oui. Tous les fichiers après l'exécution de
javac
sont dans le dossier en cours.Je n'ai pas de MAC OS pour tester, mais le standard s'appliquent. Donc cela devrait être bon... as-tu essayer de faire une commande java pour HelloWorld avec les mêmes arguments pour voir si c'est la détection de la HelloWorld fichier de classe. Aussi remplacer ./ avec . en -classpath param
Je vous remercie beaucoup.
OriginalL'auteur Himanshu Bhardwaj