0
  1. 我能够运行 junit 提供的示例测试(从任何目录)。我认为这表明我安装的 junit 非常好。

  2. 我假设,要编译一个junit测试,它与任何其他java文件没有什么不同,即:javac fileName.java

  3. 我的测试文件(.java 和生成的 .class)位于:c:\parent\child。显然,为了编译 .java 文件,我在第一行有一个包语句:package parent.child,然后是最重要的:import junit.framework.TestCase; 在此之后,有一个 public class fileName 定义 extends TestCase {}。该文件编译时没有任何警告或错误。

  4. 当我尝试时(在文件名存在的 c:\parent\child 目录中,.java 和 .class ):

java org.junit.runner.JUnitCore parent.child.fileName,我得到以下信息:JUnit 版本 4.1 找不到类:parent.child.fileName 时间:0 OK(0 次测试)

  1. 即使我从命令中完全删除 parent.child,也没有什么区别。

  2. 我的 CLASSPATH 环境变量设置为:c:\parent\junit\junit-4.1.jar;c:\parent\junit;。

  3. 如果我尝试使用 -cp c:\ 或 c:\parent\child 或其他任何东西运行,我仍然会收到错误消息。

4

3 回答 3

4

Java 包名实际上是类名的一部分,它们还以特定方式用于查找*.class文件。如果 Java 想要找到一个名为 的类parent.child.fileName,它会寻找一个名为的文件——也就是说,它会在一个名为的目录中的一个parent/child/fileName.class名为的目录中寻找该文件。您必须指定类路径才能找到目录,例如childparentparent

 java -cp "c:/junit/junit.jar;c:/" org.junit.runner.JUnitCore parent.child.fileName

类路径 (-cp) 参数必须指定 Java 应该查找类的所有位置,包括 jar 文件junit.jar,我想象它位于一个名为junit. 分号“;” 用于分隔类路径上的条目(假设您使用的是 Windows;在真实计算机上,它是一个“:”。)类路径中的“c:/”条目将用于查找parent目录因此你的班级。

于 2013-03-21T13:15:55.527 回答
-1

您应该使用 JUnit Runner 在 IDE 之外运行测试,而不仅仅是编译它。

java -cp lib/junit.jar;sw.jar org.junit.runner.JUnitCore your.package.fileName

将此行更新为您的项目结构。

于 2013-03-21T13:16:33.083 回答
-2

一般来说,使用 ant/maven/gradle 等构建系统或在 IDE (IntelliJ/eclipse/Netbeans) 中运行单元测试要容易得多

于 2013-03-21T13:18:07.040 回答