gpt4 book ai didi

java - 从命令行运行 Junit 测试

转载 作者:行者123 更新时间:2023-11-30 08:24:14 24 4
gpt4 key购买 nike

所以我编写了一个名为 Item 的类,并使用 Junit 编写了一个名为 ItemTest 的测试,我想从命令行执行我的测试。这是我遵循的步骤:

  1. 设置路径,运行 java.exe 并将类路径设置为库

    ...> set path="C:\Program Files (x86)\Java\jdk1.7.0_40\bin"
    ...> set classpath=C:\Program Files (x86)\Java\hamcrest-core-1.3.jar; C:\Program Files (x86)\Java\junit-4.11.jar
  2. 然后我只需运行 org.junit.runner.JUnitCore 来查看添加的库是否在类路径中

    ...>java org.junit.runner.JUnitCore

    输出是

    JUnit version 4.11
    Time: 0,001
    OK (0 tests)
  3. 然后我编译没有错误ItemItemTest

    C:\Users\User\IdeaProjects\My_project\src>javac .\main\java\Item.java .\test\java\ItemTest.java
  4. 然后尝试运行这个类

    C:\Users\User\IdeaProjects\My_project\src>java org.junit.runner.JUnitCore main.java.Item test.java.ItemTest
  5. 最后我得到了这个

    JUnit version 4.11
    Exception in thread "main" java.lang.NoClassDefFoundError: main/java/Item (wrong name: Item)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 2)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at org.junit.runner.JUnitCore.runMain(JUnitCore.java:86)
    at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
    at org.junit.runner.JUnitCore.main(JUnitCore.java:40)

    如何解决这个问题?我应该将 Item 放在类路径中吗?

UPD#1

将此路径放入我的类路径中不起作用(有和没有 src):

    C:\Users\User\IdeaProjects\My_project\src> 

UPD#2

当我想运行我在他存储在文件系统或他放置的包中时向他发送的类?因为我没有包,所以 My_project 除了是项目名称外,还是一个模块名称。

已解决

这是方法 - 我将下一个路径添加到类路径中:

  1. Item的路径:

    C:\Users\User\IdeaProjects\My_project\src\main\java\;
  2. 测试类ItemTest的路径:

    C:\Users\User\IdeaProjects\My_project\src\test\java\;
  3. 然后简单地运行:

    ...>java org.junit.runner.JUnitCore ItemTest

最佳答案

您必须将 .class 文件的位置放在类路径中。即使你在同一个文件夹中,如果它们不在类路径中,它也不会找到它们。那来自 DOS x .... 任何其他人。

在 DOS 中,操作系统首先查找当前文件夹。在其他任何地方,操作系统首先查找路径(或 Java 的类路径)。

如果 Item 在包 com.example.Item 中并且类在 c:\users\test\myproj\target\com\example\Item.class 那么你必须添加 c:\users\test\myproj\目标\到类路径

关于java - 从命令行运行 Junit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23095354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com