2011-11-07 2 views
0

Je viens de déposer le dossier JUnit dans/System/Library/Java/Extensions /. Je suis capable d'exécuter JUnit, mais il ne trouve pas ma classe de test.JUnit Impossible de trouver la classe: nom_package.class

Je suis en cours d'exécution de cette commande (plus quelques variantes) à partir du dossier contenant du paquet (/ containing_folder/package_name /):

java org.junit.runner.JUnitCore package_name.ClassTest 

mais il me dit:

JUnit version 4.10 
Could not find class: package_name.ClassTest 

Mon info système: MacOS 10.7.2 • Java 1.6.0_26 • JUnit 4.10

Addendum: J'ai déplacé JUnit par suggestion et j'ai essayé de courir JUnit sur ma classe de test avec le script bash suivant, mais je reçois toujours le même message d'erreur.

#!/bin/bash 
export CLASSPATH=/Users/myname/Desktop/Programming/Java/junit4.10/junit-4.10.jar:/Users/myname/Desktop/Programming/Java/:/Users/myname/Desktop/Programming/Java/package_name.jar 
java org.junit.runner.JUnitCore package_name.ClassTest 

N'importe quel utilisateur * nix ou mac voit ce que je fais de mal? Merci.

P.S. Non, "myname", "ClassTest" et "package_name" ne sont pas les vrais noms utilisés sur mon système - ils ont été anonymisés.

+0

Comment définissez-vous le classpath? Je suppose que lorsque vous tapez 'package_name' c'est juste un espace réservé pour votre vrai nom de paquet? –

+1

N'abandonnez rien dans le dossier des extensions, sauf si vous êtes ** vraiment ** certain que c'est la bonne chose à faire. C'est ** ** généralement ** le ** mauvais ** moyen de rendre les cours disponibles. * Très peu de choses doivent (et devraient) y aller. –

Répondre

0

Goood Matin,

l'affaire est (comme Dave Newton dit déjà) pour définir le chemin droit. Dans un fichier batch, il ressemblerait à ceci:

set CLASSPATH=D:\_zip\lib\junit.jar;D:\containing_folder 
java org.junit.runner.JUnitCore package_name.ClassTest 

L'important ici est d'avoir les choses suivantes dans votre Classpath:

  • fichiers de classe JUnit
  • Vos fichiers de classe, y compris votre JUnit classes de test
  • bibliothèques vos fichiers de classe dépendent

Cela signifie que vous devez régler la contenant le dossier de vos fichiers de classe (dans mon exemple c'est D: \ _ zip) dans le classpath. Vous pouvez donc définir le nom complet de la classe (y compris les packages) en tant qu'argument pour JUnitCore.

Une bonne FAQ est ici: http://junit.sourceforge.net/doc/faq/faq.htm#running_1


Mise à jour: Je ne sais pas comment le script bash und fonctionne MacOS, mais si vous avez vos classes emballées dans un fichier JAR , il suffirait, pour régler le CLASSPATH dans le manifeste de fichiers JAR:

Manifest-Version: 1.0 
Created-By: 1.6.0_26-b03 (Sun Microsystems Inc.) 
Built-By: Gruber ^^ 
Implementation-Vendor: Company 
Implementation-Title: Title 
Implementation-Version: 1.0 
Main-Class: package_name.ClassTest 
Class-Path: /Users/myname/Desktop/Programming/Java/junit4.10/junit-4.10.jar 

le Main- La classe n'est pas vraiment importante pour les tests JUnit, mais je l'ai laissé ici. Le fichier manifeste est placé à l'intérieur du JAR:

package_name.jar/META-INF/MANIFEST.MF 

Vous pouvez définir manuellement ou Eclipse il défini pour vous (exportation de pot, etc.), si vous l'utilisez ^^.

Avec cet ensemble Manifest, le script devrait ressembler à ceci (appelé dans le même répertoire que le fichier jar):

set CLASSPATH=package_name.jar 
java org.junit.runner.JUnitCore package_name.ClassTest 
+0

Merci pour le lien. J'ai écrit un script bash pour faire quelque chose comme ça (avec une syntaxe différente due à l'utilisation d'un Mac), mais je n'ai pas réussi à aller n'importe où. Des idées? J'ai édité ma question pour ajouter des informations de script. – Ellipsoid

+0

J'ai ajouté une entrée de fichier manifeste de travail pour le fichier JAR. Cela fonctionne pour moi sur mon système Win7. Je ne suis pas sûr du script bash, mais est-il correct, que les entrées sont séparées par un deux-points? ... En tout cas, dis-moi si ça a marché ^^ – Gruber

0

Vous pouvez utiliser l'option -cp.

java -cp class_path_or_jar_separated_by_comma class_to_run

Questions connexes