【问题标题】:Class load issue JUnit 4.11 [duplicate]类加载问题 JUnit 4.11 [重复]
【发布时间】:2014-09-23 17:19:31
【问题描述】:

我正在尝试 JUnit 4.11。我编写了 JUnit FooTest.java 提供的这个示例

public class FooTest{

  @Test
  public void thisAlwaysPass(){
  }

}

我在/usr/lib/jvm/java/jre/lib/ext 有 JUnit 4.11 jar 和 Hamcrest jar

现在当我运行以下命令时,它说找不到类。

$ java -cp . org.junit.runner.JUnitCore FooTest
JUnit version 4.11

could not find class : FooTest

Time : 0.002

OK (0 Tests)

我认为类路径有问题。所以我尝试不使用 JUnit,它说缺少 main:

$ java -cp . FooTest
Error: main method not found in FooTest

所以 Java 能够加载该类。但是当我尝试使用 JUnit 运行时,它找不到该类。我对java类加载有一个基本的了解。我在 JUnit 中遗漏了什么吗?

我正在使用 Fedora 17 和 OpenJDK 1.7

【问题讨论】:

  • 只是猜测,但您不应该提供FooTest的完全限定类名吗?
  • 但是我没有把它放在一个包里。这是强制性的吗?
  • 删除junit无济于事..因为你需要main()
  • @rozar 是的,我知道我只是想知道 java 是否可以加载该类。它会加载。
  • 确实,如果您使用 maven 或 gradle,这会容易得多,它们已经为您解决了所有类路径问题。

标签: java junit


【解决方案1】:

我猜是这样。 FooTest 不在类路径中。 试试这个

java -cp pathtojunit\junit-4.11.jar;pathtohamcrest\hamcrest.jar;pathto\FooTest.class; 
orj.junit.runner.JUnitCore FooTest

或者您可以将所有 jars 和您的测试类放在一个文件夹中,例如 c:\junittest\ 并试试这个

javac -cp c:\junittest\*; FooTest.java
java -cp c:\junittest\*; org.junit.runner.JUnitCore FooTest

【讨论】:

  • 当前文件夹中没有它。我正在传递“。”到 -cp
  • 所以你在一个文件夹中拥有所有的 junit 和 FooTest 和 hamcrest 并且你正在从那个文件夹运行你的命令?因为 cp 所做的是它覆盖了 javaclass 路径
  • 通过上述命令和步骤,我能够在我的计算机中运行 FooTest 类的单元测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多