【问题标题】:How to run Junit tests from command line on windows with no package?如何在没有包的 Windows 上从命令行运行 Junit 测试?
【发布时间】:2018-12-17 01:32:49
【问题描述】:

我有一个名为learning 的文件夹(这是我运行所有命令的地方)。在这个文件夹中,我有两个文件,一个名为Driver.java,它是一个简单的主类,带有一个简单的 hello world 方法。另一个文件是DriverTest.java,其代码如下所示。

import static org.junit.Assert.*;
import org.junit.Test;

public class DriverTest {
    @Test
    public void test() {
        fail("Not yet implemented");
    }
}

除此之外,我在同一 learning 文件夹中还有 JUnit 4.13-beta jar。

现在我在 Windows 中打开命令行并转到 learning 文件夹位置并运行此命令。

javac -cp junit-4.13-beta-1.jar;hamcrest-core-2.1-rc4.jar;. *.java

它没有给我任何错误,因此它编译了DriverDriverTest java 文件。

现在我正在尝试使用此命令运行 JUnit 测试。

java -cp junit-4.13-beta-1.jar;hamcrest-core-2.1-rc4.jar;. org.junit.runner.JUnitCore DriverTest

但我收到此错误:

JUnit version 4.13-beta-1
Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at org.junit.runner.Computer.getSuite(Computer.java:28)
        at org.junit.runner.Request.classes(Request.java:77)
        at org.junit.runner.JUnitCommandLineParseResult.createRequest(JUnitCommandLineParseResult.java:116)
        at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
        at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 17 more

为什么找不到我的HamCrest jar?它就在同一个文件夹中吧?

【问题讨论】:

  • 你是从好文件夹运行它吗?
  • 好文件夹?如果您的意思是我所有代码所在的同一个文件夹,是的。所有这些文件和所有命令都在同一个文件夹中运行。没有任何包裹。
  • benjamintan.io/blog/2014/10/14/…你的代码编译了吗?
  • 是的。正如我在问题中提到的,我正在使用javac -cp junit-4.13-beta-1.jar;. *.java 来编译我的代码。我还可以看到 Driver.classDriverTest.class 文件都在编译步骤之后创建。现在我缺少任何 jar 文件吗?

标签: java testing junit path classpath


【解决方案1】:

您只是将当前目录添加到类路径中进行编译。这也需要为测试调用完成,即。 ;. 在 Windows 上 :. 在 Linux 上

java -cp junit-4.13-beta-1.jar;. org.junit.runner.JUnitCore DriverTest

【讨论】:

  • 您好,感谢您的回答,我尝试了您的解决方案,显然 JUnit 需要另一个名为 hamcrest 的 jar。我已经用我用来运行 javac 或 java 的新命令更新了我的问题。我现在收到一个新错误,提示找不到 hamcrest 类(如问题中所更新)。
猜你喜欢
  • 2014-05-30
  • 1970-01-01
  • 2012-06-24
  • 2020-05-12
  • 2011-01-15
相关资源
最近更新 更多