JUnit找不到类:package_name.class

时间:2011-11-07 05:32:49

标签: java junit

我刚将JUnit文件夹放入/ System / Library / Java / Extensions /。我能够让JUnit运行,但是找不到我的测试类。

我正在从包的包含文件夹(/ containing_folder / package_name /)运行此命令(以及一些变体):

java org.junit.runner.JUnitCore package_name.ClassTest

但它告诉我:

JUnit version 4.10
Could not find class: package_name.ClassTest

我的系统信息: MacOS 10.7.2•Java 1.6.0_26•JUnit 4.10

附录: 我根据建议移动了JUnit并尝试使用以下bash脚本在我的测试类上运行JUnit,但我仍然收到相同的错误消息。

#!/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

任何* nix或mac用户都会看到我做错了什么? 感谢。

P.S。不,“myname”,“ClassTest”和“package_name”不是我系统中使用的真实姓名 - 它们已被匿名化。

2 个答案:

答案 0 :(得分:0)

Goood Morning,

诀窍(就像Dave Newton已经说过的那样)将Classpath设置为正确。在批处理文件中,它看起来像这样:

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

这里重要的是在Classpath中包含以下内容:

  • JUnit类文件
  • 您的类文件,包括您的JUnit测试类
  • 您的类文件所依赖的库

这意味着您必须在类路径中设置包含类文件的文件夹(在我的示例中为 D:\ _ zip )。因此,您可以将完整的类名(包括包)设置为JUnitCore的参数。

这是一个很好的常见问题解答:http://junit.sourceforge.net/doc/faq/faq.htm#running_1


更新: 我不确定bash脚本和MacOS是如何工作的,但是如果你把你的类打包在一个JAR文件中,那就足够了在JAR文件的清单中设置CLASSPATH:

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

Main-Class 对于JUnit测试并不重要,但我把它留在了这里。清单文件在JAR中设置:

package_name.jar/META-INF/MANIFEST.MF

你可以手动设置它,或者Eclipse会为你设置它(导出到jar等),如果你使用它^^。

使用此Manifest集,脚本应如下所示(从与jar文件相同的目录调用):

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

答案 1 :(得分:0)

您可以使用-cp选项。

java -cp class_path_or_jar_separated_by_comma class_to_run